• ベストアンサー

シーンをまたいでのサウンド再生

初めて質問させて頂きます。flash初心者です。 今アニメーションを作っていまして、場面ごとにシーン分けをしています。 アニメーションの全体にBGMを流そうと思うのですが、シーン1でBGMは止まってしまいシーン2へ移るとサウンドは流れません。 何かActionScriptでやり方があるのでしょうか? どなたか回答をお願いします。 制作環境は Mac, FlashMX2004です。

  • Flash
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

サウンドをタイムラインに挿入すると、簡単に鳴らせますけれど、あまり融通が利きません。 スクリプトで鳴らすには、いろいろと下準備も必要で少々難しいのですが、細かい制御ができるのでオススメです。 スクリプトでサウンドを鳴らす時は、「リンケージ」という設定が必要です。 「ライブラリ」ウィンドウで、BGMとして鳴らしたいサウンドを選び、control +クリックで出すメニューから「リンケージ... 」を選択してください。「リンケージのプロパティ」パネルが開きます。 「リンケージ:」の項目にある「 ActionScript に書き出し」にチェックを入れると、他の項目も編集可能になります。 「識別子」の項目に、何か分かりやすい名前を入力してください。この名前は、スクリプトでサウンドを扱う時に必要になります。日本語はトラブルの元になりやすいので、半角の英数字と” _ ”だけで付けるといいでしょう。 ここでは仮に、「 bgm 」と付けたとします。 なお、「最初のフレームに書き出し」の項目は、チェックを外しておくことをおすすめします。 チェックを入れると、サウンドのデータが最初のフレームに書き出されます。 データが書き出されるだけで音は鳴らないのですが、フレーム1の容量が大きくなるので、Now Loading のアニメを作っている場合は、フレーム1のダウンロードに時間がかかり、このアニメがなかなか始まらなくなってしまいます。 しかし、ここにチェックを入れなければサウンドデータがムービーに書き出されず、スクリプトで鳴らそうとしても音が鳴らなくなってしまいます。 簡単な対策としては、Now Loading アニメの邪魔にならないフレームに仮にサウンドを挿入しておき、「プロパティ」パネルの「同期:」のリストから「ストップ」を選んで、最初は止めておく方法があります。 フレームに挿入されているのでデータは書き出されますが、スクリプトで指示するまでは音は鳴らない、という仕組みです。 以上で下準備は完了です。 次は、サウンドを鳴らすスクリプトを設定します。 BGMを鳴らしたい最初のフレームにキーフレームを作り、次のようなスクリプトを設定します。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)  //BGMを動的に挿入し、再生する  bgm_obj = new Sound();  bgm_obj.attachSound( "bgm" );  bgm_obj.start();  //演奏終了時、自動的にループ  bgm_obj.onSoundComplete = function()  {   this.start();  }; スクリプトでサウンドを操作するには、Sound クラスを使います。ヘルプで調べる時は、「 Sound クラス」の項目をご参照ください。ここでご紹介した以外にも様々な機能があり、タイムラインではできない面白い演出も可能です。 ムービーにデータを書き出すためにタイムラインにサウンドを仮に挿入していても、これはスクリプトでは制御できません。 スクリプトで制御するには、まず、attachSound でサウンドシンボルのインスタンスを挿入します。 この時に必要になるのが、先ほど「リンケージのプロパティ」で設定した識別子です。 あとは、Sound クラスの start メソッド(関数のようなもの)を実行すれば、音は鳴ります。 しかし、何も指示しなければ、BGMは1回再生されただけで終了してしまいます。 Flash MX からは、Sound.start(); での再生が終了した時にイベントが発生して、終了を検出できるようになりました。 この時に実行する処理を予め登録しておくと、再生終了時に自動的に実行されます。 この登録をしているのが、上記のスクリプトの  bgm_obj.onSoundComplete = function ・・・ の部分です。 再生終了時に、再度サウンドを最初から再生するように定義することで、無限ループ再生になります。 上記のスクリプトで鳴らしたサウンドは、シーンが変わっても再生され続けます。 止めたい時は、  bgm_obj.stop(); というスクリプトを設定してください。 フレームでも、ボタンやムービークリップのインスタンスに設定するスクリプト(オブジェクトアクションといいます)でも構いません。 ただし、ムービークリップのインスタンスに設定する場合は、  _root.bgm_obj.stop(); となりますので、ご注意ください。 長くなってすみませんでした。 不明な点がありましたら、補足してください。

wakagi
質問者

お礼

とてもよく分かりました。ありがとうございます!早速実践してみます。

その他の回答 (1)

noname#35109
noname#35109
回答No.1

ぱっと思いついた方法です。 (思いついただけで,実験してないのですみません。) (また,他に良い方法があるとは思います。) まず,サウンド入りのムービーを用意して,そのムービーにムービークリップを用意します。 そのムービークリップ(のインスタンス名)をターゲットとして,作られた複数シーンをもつムービーをロードムービーされてはいかがでしょうか。 最初,HTMLの方で流し続ければ良いように思ったのですが,Flash的ではないので,上の方法を書いてみました。

wakagi
質問者

お礼

回答いただいてありがとうございました。

関連するQ&A

  • Flash8でサウンドが鳴りません

    Flash初心者です。 ActionscriptでBGMを流し、ユーザーがプレイとストップの制御ができるようにしたいのですがうまくいきません。 1、ボタンA(レイヤー1)とボタンB(レイヤー2)を作り、文字(レイヤー3)とscript(レイヤー4)を組み合わせてオブジェクトを作りシンボル化しました。 2、ライブラリ内のwavサウンドをリンゲージしました("bgm") 3、レイヤー4の1フレーム目に this._sound = new Sound(); this._sound.attachSound("bgm"); this._sound.start(0,999); 4、ボタンAに on(release){ this._sound.start(0,999); } 5、ボタンBに on(release){ this._sound.stop(); } と記述してあります。 シーンプレビューでは音が鳴り制御もできるのですが、 上記のシンボルをシーンのレイヤーに配置してムービープレビュー すると音が鳴りません。 どうしてでしょう?? さっぱり分からず困り果ててます。 どなたかご伝授御願いします。

  • Flash で、サウンドを停止させたいです。

    Flash で、サウンドを停止させたいです。 Flash でアドベンチャーゲームを作っています。 SharedObjectを使って、セーブ&ロード機能をつけました。 (環境) Flash バージョン - Adobe Flash CS4 ActionScript - ActionScript 1.0 & 2.0 画像にあるように、880フレーム目からBGMを再生されるようになっています。 900フレームで停止し、メニュー画面になります。 ここにロードボタンがあり、押すと以前セーブしたフレームにジャンプします。 その際に、880フレーム目に配置したBGMが流れっぱなしになってしまいます。 ボタンを押したと同時に、このBGMを停止するにはどうしたらよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • シーンの移動

    Flash初心者です。。。どうぞ宜しくお願い致します。 長いアニメーションを5つのシーンに分けて作っています。 各シーンの最後のフレームの所で、1分待機し、時間が来たら次のシーンへ移らせるにはどうすれば宜しいでしょうか? 環境は、Flash8です。 ご教示頂けましたら助かります。どうぞ宜しくお願い致します。

    • ベストアンサー
    • Flash
  • 映画のフィルムが巻き戻るようなシーンがある動画

    こんにちは。 flashアニメーションで、 「映画のフィルムが巻き戻って、過去に行く」という 場面のあるアニメーションを制作しようと思っています。 この「映画のフィルムが巻き戻る」という表現の参考になるような よいサンプル動画(観覧無料)flash or Shockwave その他 を知っている方、 教えていただけると、有り難いです。 リンク付ですと、さらにありがたいです。 かなり検索して探しましたが、 よいサンプルが見つかりませんでした。 またそのようなシーンがある映画を御存じの方、 御一報宜しくお願いします。

  • FLASHサウンドの同期を取った音のOFFボタンは作れますか?

    FLASH初心者です・・・どうか助けてください。 FLASHで、アニメーションに合わせて音を鳴らすように作りました。 アニメーションの動きに音がピタリと合うようにしたいので、 サウンドをタイムライン上に乗っけて、プロパティの設定で 「同期:ストリーミング」にしてあります。 ここまでは良かったのですが、音のOFFボタンを付けたいのですが、 たくさん調べましたがやり方がわかりません!!(涙) アニメーションの動きに合わさず、ただただBGMとして音を鳴らした場合は リンゲージなどを使ってOFFボタンが付けられるのだな、と 調べているとわかりました。 今回の私のような、アニメーションの動きと同期を取った音に、OFFボタンをつけることは可能なのでしょうか? どうか、やり方を教えていただければと思います! よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • Flash cs4 ランダム再生

    Flash初心者です。 やりたいことはホームページ上でアニメーションを再生させる際に、複数パターンのアニメーションをページをリロードするたびにランダムに切り替えるということです。 Flashにてアニメーションのタイムラインを複数パターンつくり、ランダム再生をActionScriptで制御するものを作成したいと思います。 アニメーションのタイムラインを作成しムービーシンボルとしたものを複数作成し、それをシーン1のタイムラインにて各フレームに配置して、1フレーム目にActionScriptにてgotoAndStop(ランダムフレームの記述?);とすればいいのかなと思っているのですが、正しいでしょうか? 現状ではアニメーションのムービーシンボルは必要なパターンだけ作成しました。 シーン1のタイムラインに配置まではしたのですが、ActionScriptの記述が素人なものでさっぱりわかりません。 どなたか教えていただけませんか? 自分なりにやってみたのですが、ランダム関数(?)以前にgotoAndStop()すら思うようにいきませんでした。 Flashはcs4を使用しております。ActionScript3.0のプロジェクトにして添付画像のように1フレーム目に gotoAndStop(10); としてみたのですが、パブリッシュしたswf ファイルは真っ白のまま何も動いてくれません。 gotoAndstop(10); としてみたらstopせずにタイムラインを再生しているようで、各アニメーションの最初のフレームだけが切り替わるものになってしまいました。 ともにコンパイルエラー 1180:未定義である可能性が高いメソッドgotoAndstopの呼び出しです といわれます。 ActionScriptが2.0と3.0とどちらがいいのかもわかってない状態ですが、ご教授願います。

    • ベストアンサー
    • Flash
  • FLASHにサウンドを取り込みたい

    flash cs5を使用していますが Actionscriptは2.0で作業をしています。 やりたいことは ライブラリにあるサウンドファイルにリンケージ設定をして 効果音を利用したいのですが 以下のスクリプトでうまく音が出ません。なぜなのでしょうか。 教えてください。 ※リンケージは bgm と設定。 ファイルの拡張子はmp3とかwavでやってみました。 (1)フレーム1に _root.s1_sound=new Sound(); _root.s1_sound.attachSound("bgm"); _root.s1_sound.stop(); (2)ステージのボタンに on(press){ _root.s1.sound.start(); } と記述して実行しても音が出ません。 どうしてなのかわかりません。 よろしくお願いいたします。

  • シーンの切り替え方法

    現在、仕事でFlashを制作しているんですが シーン1でボタンをクリックすると、次のシーンに飛んで再生が始まるようにしたいのですがうまくいきません。 現在、シーン1のボタンに on (release) { gotoAndPlay("シーン2”); } と入れているんですがなかなかボタンをクリックしても反応がありません。 Flash初心者なのですいませんが解決方法を教えて下さい。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • Flash MX 2004はCS4にアップグレードすべき?

    こんにちは。Flashソフトについてご質問させてください。 現在独学で学んだHTML、CSSなどを使ってWeb制作を行っていて、 Flashでも簡単なアニメーション制作をしています。 今後フルFlashサイト制作にも対応できるよう、 actionscriptの勉強も始めようと思っているのですが ソフトをアップデートするかどうかで迷っています。 現在はFlash MX 2004(エデュケーション版)を利用しているのですが こちらはactionscript 2.0となっているため、 3.0に対応するためにCS4にアップグレード(25000円くらい)するかどうかということです。 本やネットで調べたところ 2.0と3.0ですと記載方法が全く異なるということなので、 今から学ぶのであればアップグレードしたして3.0の使用を 学んだ方がいいかと思ったのですが、 3.0だと制作がかなり面倒・ソフトの動作も重いという情報もあり、 またフルFlashサイトといっても、大手企業の特設サイトのような 重~いサイトを作るわけではないので、 制作データが軽くなる3.0のメリットがあまりないのかという心配もあります。 制作現場の方はactionscriptのバージョン変更にどのように対応されているのでしょうか? アップグレードするべきかどうかについて、ご意見いただければ幸いです。 何卒よろしくお願い申し上げます。 <制作環境> ・PC:iMac ・OS:mac OS X ・Flashソフト:Flash MX 2004(エデュケーション版)

  • ページが切り替わったらサウンドを自動的に止めたい

    かなり初心者です、宜しくお願いします。 全Flashページを作っています。 トップページを開くと自動的にサウンドが流れ、 他のページへうつるとそのサウンドは自動的に止まってくれる・・・ というものを作りたいと思っています。 サウンドは外部mp3を読み込んで流す予定です。 Flashの作り方は、外部swfを読み込むというものではなく、 ページ数が少なかったのと外部swfの読み込み方がややこしかったので、 とりあえず1つのファイルにまとめました。 ラベル名をつけて、それを指定先として、Actionscriptでタイムラインを制御する形です。 この1つにまとめているからサウンドが自動的に流れたり止まったりできないのか? この形でもやり方があるのか? さっぱりわかりません。。 回答を宜しくお願いいたします。 FlashCS3で作成、Flash8で保存。swfは8/2.0で保存。WindowsXPです。

専門家に質問してみよう