トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     BGMの制御について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
fujiringo
Åê¹ÆNo.20812
投稿日時: 2005-10-13 21:29
新米
居住地:
投稿: 2
使用環境:
Win2000,Flash8
BGMの制御について
はじめて質問させていただきます。よろしくお願いします。
制作環境 WIN2000 MX2004です。

実現したいことは、
ホームページアクセス時には、音が再生されていて、ボタンを押すと停止。またボタンを押すと再生という動作を
シーンの移動に関係なくおこないたいのですが、色々と試していますが、上手くいかず、どのようにすればいいのか教えてください。

現在メインとなる(main.swf)と
BGMだけのはいった(BGM.swf)を用意して、
main.swfにBGM.swfを読み込んでいます。
ところが、main.swfはいくつかのシーンでわけているため
(シーンごとにBGM.swfを読み込むためのターゲットとなるMCを置いています。)、
シーンが移動するごとにBGMが重なって再生されてしまいます。

BGM.swfは、
シーンの1フレ目に
-----------------------
mySound = new Sound();
mySound.attachSound("BGM");
mySound.start();
-----------------------
としてリンケージした音声を読み込み、
違うレイヤーにbb_select_mcをおき、
ボタンクリックでON/OFFのボタンが切り替わるように、
そのMCの1フレ目にONボタンをおき、下記のように記述しています。
-----------------------
on (release) {
_parent.mySound.stop();
mySound.stop();
this.nextFrame();
}
-----------------------
2フレ目にOFFボタンをおき、下記のように記述しています。
-----------------------
on (release) {
mySound = new Sound();
mySound.attachSound("BGM");
mySound.start();
this.prevFrame();
}
-----------------------
これをmain.swfに、targetというMCをつくり、
そのMCの1フレ目に、this.loadMovie("BGM.swf");として、
BGM.swfを読み込んでいます。

上手く伝わらなかったらすみません。
よろしくおねがいいたします。
笠居トシヒロ
Åê¹ÆNo.20813
投稿日時: 2005-10-14 1:14
マスター
居住地: 兵庫
投稿: 870
使用環境:
SnowLeopard, Safari4, CS4
Windows7, IE8, CS4
Re: BGMの制御について
引用:
実現したいことは、ホームページアクセス時には、音が再生されていて、ボタンを押すと停止。またボタンを押すと再生という動作をシーンの移動に関係なくおこないたい

メインとなる(main.swf)とBGMだけのはいった(BGM.swf)を用意して、main.swfにBGM.swfを読み込んでいます。

BGMをON/OFFしたいだけですよね?なぜ音だけのファイルを「読み込み」してるんでしょうか?

引用:
main.swfはいくつかのシーンでわけているため(シーンごとにBGM.swfを読み込むためのターゲットとなるMCを置いています。)、シーンが移動するごとにBGMが重なって再生されてしまいます。

main.swfのルートタイムラインの1シーン目の1フレーム目に、BGMサウンドを素直に配置しておけば良いんじゃないですか?
サウンドの同期を「イベント」か「スタート」にしておけば、シーンが切り替わっても、サウンドは影響を受けません(そのまま鳴り続ける)。
ただし、ON/OFFのためのボタンのスクリプトは「start(), stop()」ではなく、「setVolume()」を使いましょう。ONでボリューム100,OFFでボリューム0です。
以下に「BGM.swfを使わない場合」のコードを示します。

//ルートタイムライン1フレーム目のスクリプト
mySound = new Sound();

//bb_select_mcの1フレーム目のスクリプト
//音が鳴っていれば1フレーム目、鳴っていなければ2フレーム目を表示
if (_root.mySound.getVolume() == 100) {
	this.gotoAndStop(1);
} else {
	this.gotoAndStop(2);
}

//bb_select_mcの1フレーム目ボタンのスクリプト
on (release) {
	_root.mySound.setVolume(0);
	this.nextFrame();
}
//bb_select_mcの2フレーム目ボタンのスクリプト
on (release) {
	_root.mySound.setVolume(100);
	this.prevFrame();
}




どうしても、targetMCにBGM.swfを読み込んでなんとかしたいのであれば、読み込むtargetをムービー全体通して1つにする必要があります。

シーンが分かれている場合、オーサリング時に配置したオブジェクトはシーンの切り換えでクリアされてしまいますから、1シーン目のアタマで、targetを複製(duplicateMovieClip()、または attachMovie())して、その複製したMCに読み込むようにしましょう。

スクリプトで複製されたインスタンスは、キーフレームに影響される事なく存在し続けますから、シーンごとにtargetを配置する必要が無くなり、結果として音が重なって再生される事もなくなるでしょう。

でも、最初に示した方法のほうが、数倍簡単ですよ


----------------
笠居 マッドシー
http://www.mad-c.com/

fujiringo
Åê¹ÆNo.20822
投稿日時: 2005-10-14 15:10
新米
居住地:
投稿: 2
使用環境:
Win2000,Flash8
Re: BGMの制御について
ご返答ありがとうございます。
できました!
ご丁寧に教えていただき、ありがとうございます!

FLASHは、はじめてでしたので、色々とここの過去の書き込みを
参考にさせていただき作業しておりましたが、経験不足のため、必要ない処理までをしてしまっていました。

ご指摘いただき、きちんとつくることができました。

あとは、BGMをループさせようかと思います。
また、過去の書き込み見て奮闘します。

ありがとうございました。
笠居トシヒロ
Åê¹ÆNo.20823
投稿日時: 2005-10-14 15:31
マスター
居住地: 兵庫
投稿: 870
使用環境:
SnowLeopard, Safari4, CS4
Windows7, IE8, CS4
Re: BGMの制御について
難しく考えず、できるだけ簡単に作れる方法を探すといいですよ。

引用:
あとは、BGMをループさせようかと思います。
また、過去の書き込み見て奮闘します。

そこは、ユーザーズマニュアルかヘルプ見たほうが早いかと(笑)

ちなみにサウンドの「同期」の横に「繰り返し」とあるところを「ループ」に変更するだけですけど。


----------------
笠居 マッドシー
http://www.mad-c.com/

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops