- ベストアンサー
フラッシュ8でのBGM再生制御方法についての質問
- フラッシュ8でウェブを作成し、フレームを4つに分けて作成しています。
- フレーム2ではon/offボタンが切り替わりません。(サウンドはon/offになりますが表示が変わらないのです。)
- 1つのフラッシュで制御したいので、この方法を完成させたいです。ご指導いただければ幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 offにしていた表示がonになってしまう件についてですが、 参照サイトを見せていただいた限りでは、書かれているシーンと 実際の展開についての関係性を理解しかねますので、 実際にフレームに名称を設定して、 サウンドの切り替え時にそこに移動するようにしてみてはいかがでしょうか。 以下、作業 1 シーン1のステージ上のボタンオブジェクトをクリックして、「タイムライン」の右側に「フレーム1 btn」と表示されているのを確認して、1フレーム目(offの画像があるフレーム)をクリックします。プロパティインスペクタが「フレーム」表示になっていることを確認して、<フレームラベル>の欄に「off」と入力する。 2 2フレーム目(onの画像があるフレーム)をクリックします。プロパティインスペクタが「フレーム」表示になっていることを確認して、<フレームラベル>の欄に「on」と入力する。 3 「タイムライン」の右側の「フレーム1」をクリックして、ステージを表示す る。 4 フレーム1およびフレーム2内のスクリプト内on(release)を on(release){ //サウンド再生中の場合は止める if(play_flg){ snd.stop(); play_flg=false; _root.btn.gotoAndStop("off"); } //サウンド停止中の場合は再生する else{ snd.start(); play_flg = true; _root.btn.gotoAndStop("on"); } } シーンの切り替え音が大きくなる現象については、 表示直後では確認できませんでしたが、 20分程経ってから再びクリックしてみたところ、確認されました。 しかしながら、シーンの切り替え音をどのように指定されているのか、 書かれている内容からは解りかねますので、私には答えられません。 オブジェクト配置とスクリプト内容を、関係性を損なわずに記述されることによって、 きっと詳しい方が知恵を貸して下さることでしょう。 今回も、動作についての保証はできません。 御役にたちましたらばよいのですが。
その他の回答 (2)
- aasiaato50
- ベストアンサー率100% (3/3)
#1です。 補足を戴いた内容は >シーン1では問題ないのですが。 >シーン2ではon/offボタンが切り替わりません。 >(サウンドはon/offになりますが表示が変わらないのです。) ということのようですので、 >なにかしないといけないこと に関しては、二点考えられます。 一点目は、 シーン2のスクリプトに snd.start();を書き加える ことだと思われます。 >シーン1では問題ないのですが。 に関して、 シーン2のスクリプトで snd.start(); を抜いたことで出た差だと思われますので、 シーン2のスクリプトに snd.start(); をシーン1と同等に書き加えて、挙動が安定したならば、 一応解決するのではないかと思いますが。 実地で組んでみていないので、断定できません。ごめんなさい。 二点目は、 ボタンオブジェクトに対してスクリプトを送る ことだと思われます。 on/offが切り替わらないのは、 対象のボタンオブジェクトがフレームを移動するスクリプトを受け取っていないからです。 つまり、書かれているスクリプト >gotoAndStop(Number(play_flg)+1); がフレームに対しての指令しか発信していないからです。 今あるシーンの今あるフレームから(play_flg)+1分先にあるフレームに対してgotoAndStopが指令されていることになっていて、 どのシーンのどのフレームにあるどのオブジェクトに命令を送るかという部分が書かれていないので、 起点.配置.(階層分繰り返す)命令内容(); _root.オブジェクト名.(オブジェクト内にオブジェクトがある場合のオブジェクト名.)命令内容(); の起点と配置までの階層を書き足すことで、スクリプトを送れるようになります。 以下、作業です。 ボタンオブジェクト上の配置は、 >ON / OFF ボタンをムービークリップとして作り、 >フレーム1に OFF、フレーム2に ON の時に表示する絵を描いて、 >そのボタンをフレームをまたいで配置しています。 とのことですので、 1 シーン1のステージ上のボタンオブジェクトをクリックして、プロパティインスペクタの歯車のアイコンの右、「ムービークリップ」の表示の下欄の「インスタンス」に「btn(任意ですが、一応ボタンとのことで、btnとしました)」と入力する。 2 「タイムライン」の右側に「フレーム1 btn」と表示されているのを確認して、1フレーム目(offの画像があるフレーム)をクリックして、スクリプトをstop();と入力する。2フレーム目(onの画像があるフレーム)にも、同様に、スクリプトをstop();と入力する。 3 「タイムライン」の右側の「フレーム1」をクリックして、ステージを表示する。 4 フレーム1のスクリプトに、gotoAndStop(Number(play_flg)+1);の次に_root.btn.gotoAndStop(Number(play_flg)+1); と書き足す。 5 シーン2でも同様に作業するか、シーン1のオブジェクトを複製する 何分机上の空論状態ですので、御役にたてるかどうか不明です。 尚、#1にて書きました trace(Number(play_flg)+1); は、 trace(表示させたい内容); で出力ウィンドウに変数や文字を表示ささせるためのスクリプトですので、 不要の場合削除されてかまいません。 分岐スクリプトなどを書いた際に、 trace("分岐1"); trace("分岐2"); などと書いて、スクリプトが正常に作動しているかどうか判断したりするのに使えます。 質問者様が質問される際に使用しているアクションスクリプトのバージョンも書いて下さった場合、もっと詳しく教えて下さる方が書き込んで下さると思います。 役に立つかは解りませんが、制作、頑張って下さい。
補足
aasiaato50様 できました=========!!!!!!!!!!! ほんとに!ほんとに!ほんとに! ありがとうございます!! 泣きそうです!! 一点目の「snd.start();を入れる」はシーン2以降に入れると音が重複してスタートしてしまいますので 外したままにいたしました。 二点目、 インスタンス」に「btn」、 ムービークリップ内on、offのフレームにstop() gotoAndStop(Number(play_flg)+1);の次に_root.btn.gotoAndStop(Number(play_flg)+1); を行いできました(涙 ただ欲を言うと、 on/offは切り替わるのですが、シーンを切り替えると offにしていた表示がonになってしまいます(音はoffのままだから大丈夫です) 更にシーンの切り替えボタンにクリック音を入れてるのですが 「シーンの切り替え→onになってしまった表示をof→シーンの切り替え→onになってしまった表示をof」 とやってるとシーンの切り替え音がどんどん大きくなっていってしまいます(汗 解りにくいと思いますので恥ずかしいですがURL載せさせていただきます。 http://yakushimacom.web.fc2.com/ ちなみにアクションスクリプトは2.0でございます。 何度も質問被せてしまい、ほんとに申し訳ございません。 お答えいただけましたら幸いです。
- aasiaato50
- ベストアンサー率100% (3/3)
上げられているURLのOKWAVEの方でベストアンサーに上げられた方が張られているリンクのページにある内容を、ボタンに適用されたらよいと思われます。 (参照に張っておきます) 以下蛇足ぽいですが、 何故フレーム2でon/offが切り替わらないのかについて、 スクリプトを見ながら考えてみました。 >再生状況に応じたフレームを表示 >gotoAndStop(Number(play_flg)+1); では、フレーム数の指定にplay_flgの値を使い回しているわけですよね。 play_flagの値は、 >再生時true、それ以外はfalse で、Numberでplay_flgの値を数字として扱うようにしていますから、 trueが1、falseが0、てことですよね。 開始時のフレームは1で、 >gotoAndStop(Number(play_flg)+1); がgotoAndStop(Number(1)+1);でgotoAndStop(2);てことになりますが、 移動先のフレームは2で、そこでもスクリプトが同じですから、 移動先はフレーム2、てことになりますよね。 >gotoAndStop(Number(play_flg)+1); の前に trace(Number(play_flg)+1); と入れると、出力ウィンドウで、移動先のフレーム数が確認できます。 問題のボタンの切り替わりについてですが、スクリプトの中に、 ボタンオブジェクトのフレームに対して送っているスクリプトは見当たりませんので、 >フレーム1では問題ないのですが。 >フレーム2ではon/offボタンが切り替わりません。 この都合に関しては、ボタンの配置がフレームを渡っているのではないかと想像しますが、ボタンの配置・設定について、御説明の内容からでは解りませんので、解決に至らなかった場合には、その点を補足して戴くことが、御質問に関して最適ではないかと思われます。 ゴールデンウィーク終わりましたが、開いていたので書き込ませていただきました。
お礼
aasiaato50様 返答が遅くなりまして申し訳ございません。 そしてコメント頂き本当にありがとうございます。 ゴールデンウィークから未だに解決していなかったので、 ヒント頂き大変ありがたく思います。 さっそくやってみました >gotoAndStop(Number(play_flg)+1); の前に trace(Number(play_flg)+1); と入れると、出力ウィンドウで、移動先のフレーム数が確認できます。 たしかに出力ウインドウで1.2.1.2とクリックするたびにでてきますが 肝心のon/off表示は切り替わりません。 ??この他になにかしないといけないことがあるのでしょうか? 本当に無知ですみません。。 >ボタンの配置がフレームを渡っているのではないかと想像します おっしゃる通りです、ON / OFF ボタンをムービークリップとして作り、フレーム1に OFF、フレーム2に ON の時に表示する絵を描いて、そのボタンをフレームをまたいで配置しています。 BGMをフレームをまたいでならしたいので今回このようになってしまっているしだいです ご指導いただければ幸いでございます。
補足
すみません! すごい間違いしてました!! >フレーム1では問題ないのですが。 フレーム2ではon/offボタンが切り替わりません。(サウンドはon/offになりますが表示が変わらないのです。) ここで説明しているフレームというのは「シーン1」「シーン2」のことです(汗)
お礼
aasiaato50様 できました!! ちょっと違う方法を使いましたが メインボディーにサウンド情報を書き込む方法で シーンの切り替え音も解決いたしました。 http://okwave.jp/qa/q5903432.html ほんとに親切にお教えいただいてありがとうございました、 また、教えられた事をやるだけではなく、今度は私がaasiaato50様のように 人に教えることができるようがんばっていきたいと思います。 ほんとにほんとにありがとうございました。