Flash AS2.0で音の同期方法について

このQ&Aのポイント
  • Flash AS2.0でサウンドの同期方法について質問です。タイムラインに直接サウンドを埋め込む場合は「ストリーミング」を選択して同期することができますが、スクリプトでサウンドを埋め込んだ場合はどのように同期することができるのでしょうか?お助けください。
  • Flash AS2.0でスクリプトで埋め込んだサウンドの同期方法について困っています。特定のフレームでサウンドを再生するためにはどのように記述すればよいのでしょうか?現在、サウンドの再生が遅れている状況です。
  • Flash AS2.0のタイムラインにスクリプトで埋め込んだサウンドの再生が遅れる問題について質問です。最初のフレームでサウンドを読み込み、特定のフレームで再生する方法を教えてください。お願いします。
回答を見る
  • ベストアンサー

サウンドの同期(スクリプトでタイムラインにサウンドを埋め込んだ場合)

音がどうしてもずれて非常に困っています。 タイムラインに直接サウンドファイルを埋め込む場合は、「ストリーミング」を選択して同期をとることができますが、スクリプトによって埋め込んだ場合はどのようにして同期をとることができるのでしょうか? たとえば次のように最初のフレームに書きます。 mySound1.attachSound("001.wav"); mySound1 = new Sound(); そしてフレームのたとえば100番目でこの音を再生するために、100番目のタイムラインに次のように記述します。 mySound1.start(); このようにするとなぜか音の再生が遅れるのです。 お助けください。 環境:flash8 AS2.0 WindowsXP

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

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

  • ベストアンサー
noname#35109
noname#35109
回答No.2

#1です。 よくわかりませんね.......。 少なくとも ストリーミングサウンド とか イベントサウンド とか言う問題ではなく, 何かの影響で処理が頭打ちしているような気はしますが。 また,結局, タイムラインのフレームスクリプトとして, mySound1.start(); を実行させたいときに遅れが起こるのか, タイピング時に mySound1.start(); を実行させたいときに遅れが起こるのかがよくわかりませんが, もしタイピング時に他の音とタイプの音が同期しないのであれば, 「updateAfterEvent 関数」は試してみられましたか? updateAfterEvent 関数 http://livedocs.macromedia.com/flash/8_jp/main/00001782.html  ~引用~ > Mouse ハンドラおよび MovieClip ハンドラでのみ機能します。 > Mouse クラスでは mouseDown、mouseUp、mouseMove、 > keyDown、keyUp ハンドラ、 > MovieClip クラスでは onMouseMove、onMouseDown、 > onMouseUp、onKeyDown、onKeyUp ハンドラです。 > Key クラスでは機能しません。 ということなので, かなり制約付きですが, Key クラスのメソッドで,キー操作監視するのではなく, 見えない(透明な,またはステージ外)ムービークリップを作って, そのムービークリップ自体に onKeyDown ハンドラ を使ってキー操作を監視させると, updateAfterEvent 関数 が使えると思います。 キー操作の音が遅れるのではなく, フレームのスクリプトだとどうしようもありませんが。 よくわかりませんが, ふと思ったので,思っただけのことを書きました。 (ぜんぜん参考にならない気がしています。)

tenketu
質問者

お礼

ありがとうございます。 キーを押す前から音がずれるのです・・・ もうあきらめるしかないみたいです。 とはいえ、2度にわたりいろいろ教えていただきありがとうございます。別の勉強になりました。

その他の回答 (1)

noname#35109
noname#35109
回答No.1

Flash には,イベントサウンド と ストリーミングサウンド という 2 種類のサウンドがありますが, Sound オブジェクトを使用して,ActionScript で配置した音はイベントサウンドであるので, 音とアニメーションの同期は基本的にできません。 しかしそのそも, アニメーションを作成する段階で,タイムラインに音を配置しないと, 音と同期したアニメーションは作れない(非常に作りにくい)と思いますが??? ここまでは簡単に言えるますが, その対処法は回答が難しいですね。 「対処法案」としましては, _root のタイムラインの最初の方(フレーム1 とか フレーム2 とか)あたりに, 無音の短い音を配置して, その音のプロパティを同期で「ストリーミング」にしてみると, 001.wav に関しても勝手にストリーミングになるかもしれません(やってみないとわかりません)。 しかし, > 音の再生が遅れるのです。 音が遅れる??? 音が遅れるということは, タイムラインに直接サウンドファイルを埋め込んで「ストリーミング」を選択した場合でも, やはり遅れるのではないでしょうか? つまり,音自体の問題ではないでしょうか? 最初に余分な無音部分があるとかそういう意味です。 普通は, 音だけが先に進んでしまう(アニメーションが遅れる)のを防ぐために 直接サウンドファイルを埋め込んで「ストリーミング」を選択する場合が多いと思います。 音の再生はイベントサウンド でも ストリーミングサウンド でもどちらでも普通は正常ですが, 複雑な図形や動きの処理に時間がかかり, アニメーション自体の絵の動きが遅れる場合があります。 その場合, 「ストリーミング」にしておくと,音の再生にアニメーションが同期を取るように, コマ飛ばしなどが自動で行われます。 それで絵はカクカクしながらも,なんとか音にアニメを無理矢理同期させるのが「ストリーミング」です。 アニメが先行してしまう(つまり音が遅れる)ような現象には, 会ったことがないので,会ったことがあっても気づかなかっただけかもしれませんが, この点についてはよくわかりません。

tenketu
質問者

補足

sassakunさん丁寧に解説していただきありがとうございます。 実は作ろうとしているものがリズム音楽×タイピング系のゲームでして、音の重複再生が頻繁でして、たぶんそれで音の方が遅れているのだと思います。 1つの音だけでは遅れないのですが、2つめの音を再生したときに0.2秒ほどの遅れが生じてしまい、その遅れはその他全ての音に影響します。しかし、時々うまくいくこともあります。 それで、ご教授していただいた対処法案ですが、うまくいきませんでした。 音自体の問題かということに関しては、無音部分はありませんから問題ないと思います。 ちなみにfpsを10まで落としてやると普通どうりにいきます。 やはりフラッシュは音には弱いのでしょうか・・・? ともあれ、教えていただきありがとうございます。

関連するQ&A

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

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

    • ベストアンサー
    • Flash
  • Flashでの音の同期について

    いつも参考にさせていただいております。 現在FlashにてCD-ROM再生を目的としたオーサリングを制作しております。(exeで再生) ナレーション(wavファイル)を26ファイル読み込み、画像とナレーションを同期をさせるものです。 波形にあわせて、音が終了してから、10フレームほど、間隔をあけ、画像のキーフレームを切り替える、ということをしていますが、ナレーションの間隔にかかわらず、どんどん、音が再生されてしまい、音と画像の同期がとれません。(swf、exeともに同期がとれません) 音を貼り付けたフレームプロパティの設定は、 効果:なし、同期:ストリーミング、繰り返し。 ムービーサイズは800x600 フレームレートは20fps としています。 音と画像の同期をとるための効果的な方法はあるのでしょうか?

  • シーン1から元のタイムラインに戻るには

    タイムラインに置いているムービークリップの中(シーン1)にボタンをいくつか置いています。 ムービークリップの中(シーン1)のボタンをクリックしたら、元のタイムラインの指定したフレームに戻るようにするにはどうしたらいいでしょうか? 環境はWINXP FLASH8です。

  • 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
  • FLASH8のタイムラインのフレーム数は、16000までしか使えないのでしょうか?

    FLASH8のタイムラインのフレーム数は、16000までしか使えないのでしょうか? FLASH8にて、10分弱の長さのアニメーションを作ろうとしています。 30fpsで作成しているのですが、フレーム数が16000を過ぎた時点から、タイムラインの空白キーフレームに画像を挿入しても、普通は白丸が黒丸に変化するところ、白丸のままです。 それでも、ステージ上では、続けて配置できます。 しかし、パブリッシュすると、やはり16000フレーム目までしか、書き出されていません。 どこかの設定で、16000フレーム以降も、使用できるようにならないでしょうか? 初歩的な質問で申し訳ありませんが、よろしくお願いいたします。

  • 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でのサウンド処理について

    作業環境Flash 8 pro + win XP sp2です。 ある特定のサウンドファイルが音ズレしてしまいます。 8個くらいのWAVファイルを、別個のサウンドオブジェクトに attachsoundで割り当てて、それぞれの音量を0からスタートさせ、 全部の音量が100になると1つの曲に聞こえるということをしたいのですが、 ある特定のサウンドだけ、音がズレてしまいます。 Flash Player単体での再生だとズレませんが、 IEやOpera等のブラウザに読ませるとズレてしまいます。 firefoxやMac(確認環境中一番スペックが低い)のsafariだとズレませんでした。 operaはともかくIEで音がズレてしまうのはいただけないので、 なんとか対応したいと考えております。 例) "A"と"B"のサウンドオブジェクトに両方にB.wavという音を割り当てても音はズレないのですが・・・ "A"にA.wavを、"B"にB.wavを割り当てると"A"の音が遅れます。 "B"にA.wavを、"A"にB.wavを割り当てると"B"の音が遅れます。 違いはattachsoundにて指定する識別子を切り替えただけなのですが、A.wavを割り当てた方のサウンドは遅れてしまいます。 という感じです。 プロジェクトが重たく、おかしな事が起きているかとも思い、 最低限のムービークリップを残し、他を削除してみると、 "A"と"B"のサウンドオブジェクトに両方にB.wavを割り当てたときに "A"の音がずれてしまいました。もともとB.wavはずれなかったのに・・・ 意味がわからずお手上げ状態です。 アクションスクリプトの問題なのか、Flashの内部でのサウンドの処理に問題があるのか、ブラウザ固有の問題なのか、わからず困っています。 未熟なため、状況の説明が不足しているかもしれませんが、 対応方法もしくは原因などわかる方いらっしゃいましたら、ご教授ください。 よろしくお願いいたします。

  • 外部mp3をストリーミング再生させる記述

    以前にも似たような質問をさせて頂きましたが、どうも上手くいかないので再度質問させて頂きます。 ストリーミングを表示するプログレスバーと クリックしたらmp3が再生するようにしたいのですが、 下記の構造と記述では上手く行きません、サーバーに上げないと 駄目なのでしょうか? 構造 Progressバー⇒MC ボタン⇒MC 同一のステージ上に配置してあります。 ボタンMCに下記の記述をしました on(press){ mySound="フォルダ名/データ名.mp3" mySound.loadSound(フォルダ名/データ名.mp3 + ".mp3",true); mySound.start(); mySound.myBar.x_scale = (getBytesLoaded ()/getBytesTotal ())*100; } *myBarがプログレスMCにつけたインスタンス名です。 タイムラインの記述は1フレームめに mySound = new Sound(); と、しました。

    • ベストアンサー
    • Flash
  • Flash5でのサウンドとイベントの同期

    Flash5で音声ナレーションにあわせて写真が表示されるようなものを 作っているのですが完全にナレと写真の表示が同期しません。 FlashPlayerではうまくいくようですが、ブラウザプラグインとして 再生する場合はマシンによってうまくいったりいかなかったりという 結果になっています。 現状はFlashのタイムライン上にイベント「スタート」でナレを わりあて波形位置にあわせて写真を表示するタイミングで フレームActionを設定しています。 うまくナレと表示を同期させる方法はないのでしょうか。 御存じの方法がありましたらご教授のほどお願い致します。

  • mcのタイムライン制御

    初歩的な質問で申し訳ないです。 _root  └mc1 この状態で、ムービー再生時に特定キーを押してmc1のタイムラインを再生する(10フレーム→15フレームへ…のように)にはどうすればよいでしょうか? いろいろ試しましたが、うまくいかなかったもので…

    • ベストアンサー
    • Flash

専門家に質問してみよう