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

attachSoundを使って複数の音を同時に鳴らしているのですが、音Aと音Bがあるとします。この音Aは最初Pan-100の位置で鳴っているのですが、音Bが鳴った瞬間なぜかPan位置が音Bのものになってしまうのです。設定等に間違いはありません。このような現象って起こりうるのでしょうか?対処法を教えてください。

A 回答 (1件)

音を鳴らす Sound オブジェクトを作る new Sound は、正式には制御するムービークリップを指定することになっています。


省略すると、_root 、つまりムービー全体の音を制御する Sound オブジェクトが作成されます。

ムービークリップは音を出力するチャンネルとしての役割を果たします。
複数の Sound オブジェクトを作ると同時に2種類以上の音を出すことはできるのですが、1つのムービークリップに設定できるボリュームやパンは1つだけです。
たとえ複数の Sound オブジェクトを作って複数のボリュームやパンを設定していたとしても、これらがいずれも同じムービークリップの音を制御している時は、最後に設定したものがそのムービークリップの音の出力設定として採用されます。


違う出力設定で音を鳴らしたい場合は、その分だけチャンネルであるムービークリップを用意する必要があります。
例えば2種類の出力設定で鳴らすなら、ムービークリップを2つ用意し、それぞれのムービークリップの音を制御する Sound オブジェクトを作成して音を管理するようにします。

スクリプトにしてみますと、大体次のようになります。
音を鳴らす Sound.start の実行タイミングやリンケージ名などは作品に合わせて適宜変更してください。

(↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)


 //ダミーのムービークリップを作成
 this.createEmptyMovieClip( "dummy_a" , 0 );
 this.createEmptyMovieClip( "dummy_b" , 1 );

 //オブジェクトの作成
 //2種類の音を2つのムービークリップを使って出力する
 snd_a = new Sound( dummy_a );
 snd_b = new Sound( dummy_b );

 //サウンドシンボルを割り当てる
 snd_a.attachSound( "A" );
 snd_b.attachSound( "B" );

 //パンの設定
 //Aを左、Bを右スピーカーから出す
 snd_a.setPan( -100 );
 snd_b.setPan( 100 );

 //再生開始
 snd_a.start();
 snd_b.start();


空っぽのムービークリップをスクリプトで作る createEmptyMovieClip は Flash Player 6(作成ツールは Flash MX )以降で使えます。
Flash 5 をお使いの場合は、絵のないムービークリップシンボルを作り、インスタンスをステージに2つ配置するなどして対応してください。
    • good
    • 0

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