アプリ版:「スタンプのみでお礼する」機能のリリースについて

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


読み込まれるswfのスクリプトをのせておきます.
s1_sound = new Sound();
s1_sound.attachSound("midi1.aif");
s1_sound.start(0,999);

A 回答 (1件)

結論から書きますと、



 s1_sound = new Sound();

の部分を

 s1_sound = new Sound( this );

と書き換えてみてください。これで直ると思います。


Sound オブジェクトを作る new Sound は、正式には Sound オブジェクトで制御するムービークリップを指定することになっています。
省略すると _root の音を制御する Sound オブジェクトが作られ、ムービー全体の音を制御するオブジェクトになります。

仮に、ムービー Main.swf と Sub.swf があり、Main.swf にあるムービークリップ clip に Sub.swf が読み込まれるとします。
Sub.swf にある Sound オブジェクトが _root の音を制御するオブジェクトの場合は、Main.swf に読み込まれた時点で _root は Main.swf のタイムラインを指すようになるため、Main.swf のライブラリを参照して attachSound が実行されます。
つまり、Main.swf に” midi1.aif ”というリンケージ識別子を持つサウンドシンボルがあればこのシンボルのインスタンスが挿入されて演奏が始まりますが、該当するシンボルが見当たらないと attachSound が失敗してしまい、音は鳴りません。

Sub.swf のタイムラインでの this は、Sub.swf 単体で再生した時は Sub.swf の、Main.swf にあるムービークリップ clip に読み込まれた時は clip のタイムラインを指します。
clipに 読み込まれても、Sub.swf が持っているライブラリは Main.swf とは別のものとして開かれていて、Sub.swf では引き続き自分のライブラリを使用してムービーを再生しています。
よって、clip に読み込まれた時に、_root ではなくこのムービークリップ内の音を制御する Sound オブジェクトにしておくことで、clip に読み込まれたムービーのライブラリ、要するに Sub.swf が持っているライブラリからサウンドシンボルを挿入できる仕組みになります。
    • good
    • 0
この回答へのお礼

できました!ありがとうございます.
とても丁寧に解説していただきました.

お礼日時:2005/08/10 17:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!