Flash CS5 でイベント (ボタンを押すなど) の後に 2 つのサウンド ファイルをクロスフェードさせようとしています。理想的には、最初のサウンドはボタンが押されるまでループし、その時点でサウンド 2 が同時にフェードインしてフェードアウトが開始されます。ご協力いただきありがとうございます :)
1 に答える
0
この効果を実現するには、2 つの soundChannel を使用する必要があります。cs5を使用しているので、最初のサウンドファイルを次のようにループしていると想定しています(そうでない場合はそうすべきです):
var sc1:SoundChannel = myFirstSound.play(0, 999);
ここで、イベントが呼び出された (ボタンがクリックされた) ときに、最初のサウンド ファイルの音量を下げ、2 番目のサウンド ファイルの音量を上げます。これを行うには、soundChannels で soundTransform プロパティを使用できます。これは、音量を下げる例です。
sc1.soundTransform = new SoundTransform(sc1.soundTransform.volume - .1, 0);
エンターフレーム ループでは、このように最初のサウンド ファイルの音量を下げます。このループでも、2 番目のサウンド ファイルの音量を上げる必要があります。
var sc2:SoundChannel = mySecondSound.play(0, 999);
sc2.soundTransform = new SoundTransform(0, 0);
次に、enterframe ループ内で 2 番目のサウンドを増やします。これは上記と同じですが、減算ではなく加算です。
sc2.soundTransform = new SoundTransform(sc2.soundTransform.volume + .1, 0);
この場合の .1 は、音をフェードさせる速さです。あなたはそれをいじる必要があるかもしれません。最初のサウンド ファイルのボリュームがゼロになったら、それを削除してループを終了する必要があります。とにかく、これはあなたの目標を達成するのに十分な情報だと思います. 幸運を。
于 2012-07-10T23:42:45.263 に答える