外部読み込みムービー上の音楽制御

このQ&Aのポイント
  • 外部読み込みムービー上の音楽制御についての質問です。
  • 外部のムービー上で流れている音楽のボリュームを変えたいと思っていますが、うまく行かないです。
  • ムービークリップに書いたスクリプトで音楽のオン・オフを切り替えていますが、要素が足りないのかもしれません。
回答を見る
  • ベストアンサー

外部読み込みムービー上の音楽制御

ステージにムービークリップを置いて、そこに外部のムービーを読み込んでいます。 その外部のムービー上で音楽が流れており、その音楽のボリュームを変えたいと思っているのですが、どうもうまく行かないのです。 下記はボリュームオン・オフ用のムービークリップに書いたスクリプトです。(music_button) //クリックされた時にオン・オフを切り替える on(press){ music = music * (-1); //サウンドのオンオフを切り替える s1_sound.setvolume(music*100); if (music = 1){s1_sound.start();} else{s1_sound.stop();} } 外部のムービークリップ上の音楽には「BGM」という識別子をつけています。 上記のmusic_buttonの置いてあるメインタイムラインの2フレーム前で _global.s1_sound = new Sound(); s1_sound.attachsound("BGM"); という宣言をしています。 何か音楽を制御するための要素が足りないのでしょうか。あるいは、階層の指定などが間違っているのでしょうかね。。。 何か手がかりをご存知の方よろしくお願いします。

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

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

  • ベストアンサー
  • perse
  • ベストアンサー率74% (113/152)
回答No.1

読み込む側のSWFをMain.swf Main.swfのステージ(_root)にあるムービークリップをMC 読み込まれるSWFをLoad.swfとします music_buttonがどちらのswfにあるかわからないので 勝手にMain.swfにあるとします。 //Main.swf ルートのタイムライン _root.MC._lockroot = true; //読み込まれるswfのルート参照を指定 _root.MC.loadMovie("Load.swf"); //swf読み込み _root.music=1 //値の初期化 //Main.swf ルートにあるボタンmusic_buttonのボタンアクション on (release) { this.music = this.music*(-1); //フラグ反転 if (music == 1) { //1のとき 比較は==です。 this.MC.s1_sound.setVolume(100); //ボリューム設定 } else { this.MC.s1_sound.setVolume(0); } } //Load.swf ルートタイムライン var s1_sound = new Sound(this); //loadMovieで読み込むときはthisが必要 this.s1_sound.attachSound("BGM"); this.s1_sound.start(); で出来きます。

pochitarou
質問者

お礼

詳細な解説どうもありがとうございます。 おかげさまで解決いたしました。 どうやら、アクションスクリプトの基本的な記述方法をもっとちゃんと勉強しないとだめなようですね。

関連するQ&A

  • flashの音再生について

    main.swfにactionscript2.0で音のon/offしているのですが、 offになって欲しくない音までoffになってしまいます。 スクリプトで呼び出している音ならばまだわかるのですが、 flvで外部から読み込み再生しているファイルなので、 訳が分からず困っています。 ちなみに音再生スクリプトはフレーム上に以下 //BGM制御用のダミーのムービークリップを作る this.createEmptyMovieClip( "bgm_clip" , 0 ); //BGMの設定 sndbgm = new Sound( bgm_clip ); sndbgm.attachSound( "BGM01" ); sndbgm.setVolume( 100 ); sndbgm.onSoundComplete = function() { //無限ループ再生 sndbgm.start(); }; //BGMを再生 sndbgm.start(); //BGMのボリュームとフェードの速さを管理する変数 bgm_vol = 100; fade_spd = 5; //SE設定 allse = new Sound(); allse.setVolume( 100 ); S1 = new Sound(this); S1.attachSound("SE01"); S2 = new Sound(this); S2.attachSound("SE02"); S3 = new Sound(this); S3.attachSound("SE03"); on/offにはMCで以下の様にしています。 on (release) { if (this._parent.sndbgm.getVolume()>0) { this._parent.sndbgm.setVolume(0); this._parent.allse.setVolume(0); this._parent.v_on_off.gotoAndStop("soundOFF"); } else if (this._parent.sndbgm.getVolume()<=0) { this._parent.sndbgm.setVolume(100); this._parent.allse.setVolume(100); this._parent.v_on_off.gotoAndStop("soundON"); } } SE再生にはフレーム上に S1.start(); と入れています。 使用バージョンはCS4になります。 どなたか判る方、教えて下さい。

    • ベストアンサー
    • Flash
  • 外部ムービーを読み込んだとき音が鳴らなくて困っています.

    外部のムービーにサウンドオブジェクトを作ってattachしてstartするスクリプトを書いているのですが,そのswfファイルを他のswfファイルからloadMovieしたときに読み込まれたswfファイルの音が出ないのです.助けてください;; 読み込まれるswfのスクリプトをのせておきます. s1_sound = new Sound(); s1_sound.attachSound("midi1.aif"); s1_sound.start(0,999);

    • ベストアンサー
    • Flash
  • Flashでアニメーションとサウンドを違うタイミングでループさせたい

    こんばんは! Flash8を使ってHPにアップするSWFファイルを作成しています。 アニメーションもサウンドもループ再生させたいのですが、アニメーションの長さとサウンドの長さが違いうまくループさせることができません。 アニメーションは56秒、サウンドは1分48秒という感じです。 さらに、サウンドはON・OFFで音が制御できるようになっています。 下記のスクリプトで挑戦してみたのですが、ON・OFFを押すたび音が増えて輪唱のように何重にも重なって聞こえてきます。 「ON・OFFムービークリップ1フレーム目」 stop(); _root.soundA = new Sound(); _root.soundA.attachSound("00000.mp3"); _root.soundA.start(0,999); 「シーンにおいたON・OFFムービークリップ」 on (release) { if (_root.soundA.getVolume()>0) { _root.soundA.setVolume(0); _root.on_off.gotoAndStop("soundoff"); trace(_root.soundA.getVolume()); } else if (_root.soundA.getVolume()<=0) { _root.soundA.setVolume(100); _root.on_off.gotoAndStop("soundon"); } } 質問内容がわかりにくいかもしれませんが、ご回答よろしくお願いします。

  • 2つの音のボリューム制御

    質問させてください。 Flashで2つの音を鳴らしたいと考えています。 一つはタイムラインにおいて、画面と同期させて います。二つ目は常に鳴るようにサウンドオブジェクト で鳴らしています。 問題は、setVolumeで音のボリュームを制御したいの ですが、下記のように2つのサウンドオブジェクトを 作成しても、最後に設定したsetVolumeに2つの音が ボリューム指定されてしまって、別々にボリューム 制御ができません。 (下記のように、タイムラインの音は30、スクリプト 制御の音は80で設定したい。) ●タイムラインの1フレーム目のフレームアクション _root.snd = new Sound(); _root.bgmsnd = new Sound(); //タイムライン用のボリューム指定 _root.snd.attachSound("menu1"); _root.snd.setVolume(30); //スクリプト制御用のボリューム指定 _root.bgmsnd.attachSound("bgm"); _root.bgmsnd.setVolume(80); _root.bgmsnd.start(0,99999); 解決方法、おわかりの方おられますでしょうか? Flash MX 2004 Windows XP

    • ベストアンサー
    • Flash
  • 【音声個別に再生】

    まず音声の素材にリンケージで ActionScript書き出しのみにチェック入れて 識別子を”bgm01”と”bgm01”の二つを用意します。 それを別々に再生させて それぞれの「音量」をコントロールできる スクリプトを書きたいのですが どうしても「音量」だけ 2つの素材すべてに影響して 両方とも音量が下がります。 どうすれば回避できるか教えてください。 【再生ボタン】 on (release) { mySound.stop("bgm01"); mySound = new Sound(sound_mc); mySound.attachSound("bgm01"); mySound.start(0, 999); // 音量設定( 0% ~ 100% ) mySound.setVolume(100); vol = mySound.getVolume(); } 【停止ボタン】 on (release) { mySound.stop("bgm01"); } 【音量ボタン】 on (press) { // 音量設定( 0% ~ 100% ) mySound.setVolume(50); vol = mySound.getVolume(); } これをmySoundに添え字で番号を振って bgm02も同じように作ります。 以上で、私が書いてるスクリプトです。

    • ベストアンサー
    • Flash
  • サウンドの制御で・・・

    初心者ですが、教えていただけると嬉しいです。 簡潔にいうと、サウンドを再読み込みしたときに音を鳴らさない仕組みにしたいのです。 私が作成したデータなのですが、 メインのページ(main.swf)があり、そこにメニューの項目(外部の各1.swf、2.swf、3.swfをムービークリップに読み込む用に設定)があります。 メニュー項目をクリックすると外部にあるSWFを読み込むムービークリップがおいてあるフレームに移動する方法になっています。 main.swfにのみONOFFボタンを作成し、最初にONの状態で 音を鳴らし、ループするようにしてあります。 MCの中にAiffサウンドをいれ、そのプロパティに同期イベント繰り返し999の設定をしています。 メインのページ(main.swf)のONOFFボタン制御はきちんとできているようで、OFFとしたときに、外部SWFページを読み込むフレームに移動したときも同じようにサウンドは止まった状態です。 しかし、ONにしたとき、外部SWFを読み込むフレームに移動したとき音がループしてなり続けているのですが、メインのページに頭からもどったときに、最初に鳴らした音も続いたまま二回目の音が重なって鳴ってしまうのです。 何度も繰り返すと二十三十とダブってしまうのです。 そのため、再度メインに戻ったときに音を読み込まない方法を教えていただきたいのです。 説明不足かもしれませんが、不明な箇所ありましたら補足いたします。 どうか宜しくお願い致します。

  • AS2でキーによる音楽制御について

    AS勉強中で初心者の者です。 今回キーによる音楽制御を勉強しておりまして、不明点がありますので教えてください。 環境はwindows、Flash5.5、AS2です。 内容はAキーを押すと音楽がループ再生し、Bキーを押すと音楽が停止するもの。また他のキーを使って複数の音楽を同時再生、そのうちの1つの音楽のみを停止させる等、複数の音楽をそれぞれ制御できるものを制作したいです。 現在ライブラリにボタン1とボタン2、リンゲージ設定されたsoundAを用意し、シーン1にボタン1を配置し、ボタン1に on (release) { soundObj.start(0, 100); } を書きました。 同じようにシーン1にボタン2を配置し、ボタン2に on (release) { soundObj.stop("soundA"); } を書きました。 そして、シーン1のタイムライン1フレーム目に soundObj = new Sound(); soundObj.attachSound("soundA"); を書きました。 これではステージ上のボタン1、2をマウスクリックすることで音楽を制御することになります。 これをキーで制御したいのですが、どのようにすればいいのでしょうか? 自分なりに模索したのはon (release) をonClipEvent(onKeyDown)にすればいいのか(←これだとAキー等の指定はどうすればいいか?)、on (release) ではなくKey.isDown(65);を使うのか(これは動かなかったので、何かた足りないのか?)です。 後はそもそもキーで制御する際はボタンではなく、ムービークリップの方がいいのでしょうか? 説明が下手で至らない点もあるとは思いますが、どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • flashのムービーについて(>_<)

    初歩的な質問ですいません。 ムービーを(音楽入り)読み込ませて 再生させたときに音をOFFにするのは どうすればいいんでしょうか。 ボタンでON・OFFではなく 通常OFFでONボタンを押すと 2フレーム目から音入りで再生するようにしたいのです。 1フレーム目にサウンドOFFの記述を書きたいのですが ボタンを押さずにデフォルトでOFFになるようにするには どうすればいいでしょうか。 初心者ですいません。

  • flashのBGMのoff/onボタン

    はじめまして。Flashがまだよくわかっていない初心者です。マニュアル本、こちらのhttp://oshiete1.goo.ne.jp/qa1789705.htmlを参考にやってみましたが、わかりません。お願いです。教えてください。 最初に開いたらBGMがデフォルトで鳴っていて、「サウンドOFF」ボタンを押すとBGMは停止し、アニメーションは最後までという内容です。 現在の状況および作成手順ですが、 「シーン1」には2つレイヤーがあり、1つ目のレイヤーは「but」とし、これにはサウンドOFF/ONのムービークリップを配置してあります。フレームは1つだけで、ここに下記を記述(action)しました。 ---------------------------------------- onClipEvent(load) { //サウンドを挿入 snd = new Sound(); snd.attachSound( "BGM" ); //無限ループ再生設定 snd.onSoundComplete = function() { this.start(); }; //サウンドの再生状況を保持する変数 //再生時true、それ以外はfalse play_flg = false; //再生状況に応じたフレームを表示 gotoAndStop( Number( play_flg ) + 1 ); } on(release) { //サウンド再生時は止める if( play_flg ) { snd.stop(); play_flg = false; } //停止中の場合は再生する else { snd.start(); play_flg = true; } //再生状況に応じたフレームを表示 gotoAndStop( Number( play_flg ) + 1 ); } ---------------------------------------- 2つ目のレイヤーには「写真」という名前で写真5枚がフェードインアウトしながら切り替わる、というムービークリップを制作しました。 これをプレビューすると、ムービーは実行されますがBGMは鳴りません。また「サウンドOFF」「サウンドON」のボタンが繰り返してしまいます。 デバック出力で下記エラーと表示されます。 ---------------------------------------- **エラー** シーン = シーン 1, レイヤー = but, フレーム = 1 :行 1:クリップイベントはムービークリップインスタンスでのみ使用可能です。 onClipEvent(load) **エラー** シーン = シーン 1, レイヤー = but, フレーム = 1 :行 21:マウスイベントはボタンインスタンスでのみ使用できます。 on(release) ActionScript エラー数 :2 報告済みエラー :2 ---------------------------------------- どうかどのようにしたらいいのか教えてください。お願いします。

  • FLASHで演奏中の表示の仕方

    初めて質問をします。 FLASH8使用で、FLASHの中にバックミュージックを入れたいと思っています。 BGMのONとOFFのボタンを付けて、押すとそれぞれ音楽が流れ始めたり停止したりします。 ここまではできたのですが、演奏が始まると同時に「演奏中」を表現するマークを表示したいのです。 「BGM ON」ボタンを押すと「key1 = 1;」、「BGM OFF」ボタンを押すと「key1 = 0;」のような0と1をkey1に代入することでONとOFFの切り替えにできないかと思っているのですが、いまいち演奏中のグラフィックと連動できずにいます。 まだFLASH駆け出しの身なので、初歩的な事なのかもしれませんがご教授お願いします。 [BGM ON]のボタン内のスクリプト on (release){ key1 = 1; my_sound.start(0,999); } [BGM OFF]のボタン内のスクリプト on (release){ key1 = 0; my_sound.stop(); } 上記のようにしてみています。

専門家に質問してみよう