1

私は小さなFlashゲームに取り組んでいますが、異なるサウンドを同時に再生するのに問題があります。

たとえば、プレイヤーが塔を通過すると、ゴングの音が鳴ります。ジャンプするとジャンプ音が鳴ります。これらの2つのアクションは同時に発生する可能性があり、その場合は2つのサウンドを一緒に再生(オーバーラップ)する必要があります。

これらの音は次のように宣言されています。

s_jumping = new Sound();  
s_jumping.attachSound("s_jump");  
s_noise2 = new Sound();  
s_noise2.attachSound("s_gong");  

そして、それらは(必要に応じて)単純なs_jumping.start(0,1);またはで呼び出されs_noise2.start(0,1);ます。
私のコードのどこにも、s_jumping.stop()またはを呼び出すことはありませんs_noise2.stop()

これらのサウンドは、別々に再生すると正常に機能しますが、一緒に再生すると機能しません。2番目の音が鳴ると、最初の音が止まります。

new Sound()別の変数名で使うということは、それらの音が別々に存在するということだと思いました。代わりに、一方のサウンドがもう一方のサウンドをオーバーライドするようなものです。

私は何が間違っているのですか?

(注:ここでは大量のサウンドを再生しようとはしていません。私のテストでは、同時に最大3つのサウンドがあります。)

更新:さらにテストした後、持っているバックグラウンドサウンドを1つ削除すると、これらのサウンドは正常に再生されます。だから、ある種の限界に達したようです。奇妙なのは、現時点で私が同時に演奏する音は最大で3つまたは4つであるということです。私が読んだものから、それは少なくとも8つの音でOKであるはずです!
(注:Flash CS4、actionscript 2を使用し、Flash Player 8にエクスポートします。)

4

1 に答える 1

1

OK、問題は停止機能の不適切な使用が原因であると思われます。

どうやら、「s_jumping」サウンドだけでなく、すべてのサウンドs_jumping.stop();を停止します。

1つのサウンドだけを停止するには、その識別子(「ActionScriptのエクスポート」のサウンドプロパティで宣言されている)をパラメーターとして渡す必要があります。

s_jumping.stop('s_jump');

ここでのロジックはよくわかりませんが、少なくとも意図したとおりに機能しています。^^

于 2012-09-26T09:11:10.550 に答える