2012-09-21 85 views
1

我正在製作一個小型Flash遊戲,並且遇到麻煩的同時播放不同的聲音。AS2 - 一起播放多個聲音

例如,當玩家通過塔時,會發出鑼聲; 當玩家跳躍時,播放跳躍聲音。 這兩種行爲可以同時發生,如果情況屬實,這兩種聲音應該一起播放(重疊)。

這些聲音被聲明如下:

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()

這些聲音在單獨播放時可以正常播放,但當播放時它們不起作用。發出第二個聲音時,第一個聲音停止。

我認爲使用new Sound()具有不同的變量名稱意味着這些聲音將單獨存在。相反,它就像一個聲音覆蓋另一個聲音。

我在做什麼錯?

(注意:我並不想在這裏打球的聲音的一個巨大的數字在我的測試中最多有3聽起來在同一時間)

更新:進一步檢查之後,這些聲音如果我刪除一個我有的背景聲音,可以玩得很好。所以看來我碰到了某種限制。奇怪的是,目前我最多同時播放3或4個聲音。從我讀的這個應該沒問題,至少有8個聲音!
(注意:使用Flash CS4,actionscript 2,併爲Flash Player 8導出)

回答

1

好的,看起來問題是由於停止功能使用不當造成的。

顯然,s_jumping.stop();將停止所有聲音而不僅是「s_jumping」的聲音。

要停止只是一個聲音,你必須通過它的標識(如「爲ActionScript導出」下的聲音屬性聲明)作爲參數:

s_jumping.stop('s_jump');

我真的不明白這裏的邏輯,但至少它現在按預期工作。 ^^