- ベストアンサー
FlashsでのBGMのon/offfボタンについて
- Flashsで使えるBGMのon/offボタンの作成方法と、発生している問題について教えてください。
- Flashsで作成したBGMのon/offボタンが正しく機能せず、一度offしてしまうと音楽が再生されなくなる問題が発生しています。
- 質問者は初心者であり、他のユーザーが投稿した質問(リンク先参照)を参考にして作成したため、詳細な理解ができていない状況です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
その質問で回答した者です。 リンケージの設定のし忘れや識別子の間違いなどがありませんでしょうか。 とりあえず、タイムラインに挿入した音楽は「同期:」の項目で「ストップ」を選んで止めておき、onClipEvent(load) の中にある snd.attachSound( "BGM" ); の下に snd.start(); というスクリプトを追加してみてください。 これで音が全く鳴らなくなるようなら、リンケージの識別子が定義されていないか、”BGM”以外になっていることが原因と思われます。 「リンケージプロパティ」を開き、誤りがないかをご確認ください。 識別子は全角と半角・大文字と小文字も区別されます。このような些細な誤りにもご注意ください。 「同期:」で「ストップ」を選ぶと、タイムラインに挿入した音は再生されず、スクリプトの attachSound で挿入した音だけが snd.start(); に従って再生されます。 しかし、リンケージを設定し忘れていたり、「リンケージプロパティ」で設定した識別子と attachSound で指定している識別子(今回の例では”BGM”)が違っていると、attachSound での音の挿入に失敗し、音が鳴らなくなります。 タイムラインで音を鳴らさずスクリプトだけで鳴らした時に何も鳴らなくなるようなら、attachSound の失敗が怪しいです。 attachSound が失敗する原因はいくつかありますが、よくあるのは識別子の誤りです。 タイムラインに入れた音楽の同期を「イベント」に設定し、snd.start(); を追加してスクリプトでも音を鳴らすようにすると、音が二重に再生されて音量が大きくなったり、重複して耳障りになります。 今回の作例でタイムラインに音を入れるのは、サウンドシンボルのデータを任意のフレームに書き出すためであって、タイムラインを使って音を鳴らすことが目的ではありません。 (理由は No.1789705 の回答の前半で説明しておりますので、ここでは割愛させていただきます) snd.start(); を追加した場合は、「同期:」の項目で「ストップ」を選択しておくか、音楽を挿入したフレームを gotoAndPlay などでスキップして、タイムラインに入れた音が再生されないようにしてください。 ----------------------------------------------------- なお、今回のスクリプトを利用する swf ファイルが、loadMovie などで他のムービーの中に読み込まれる場合は、onClipEvent(load) の snd=new Sound(); この部分を、 snd=new Sound( this ); または snd=new Sound( _parent ); としないと、他のムービーに読み込まれた時に音が鳴らなくなります。 理由はあるのですが、慣れないうちは”おまじない”だと思ってくださっても構いません。 loadMovie 等を使わず単体で再生する時は、あえて this や _parent を付けなくても大丈夫です。
お礼
有難うございました。 返事がおそくなってすみません。 とっても単純な間違いをしていました。 ボタンにリンゲージをしてました。 すみません。