1

我正在开发一个小 Flash 游戏,但我在同时播放不同的声音时遇到了麻烦。

例如,当玩家通过塔时,会发出锣声;当玩家跳跃时,会播放跳跃声音。这两个动作可以同时发生,如果是这种情况,两个声音应该一起播放(重叠)。

这些声音声明如下:

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

然后(在需要时)用简单的s_jumping.start(0,1);or调用它们s_noise2.start(0,1);
在我的代码中,我从未调用过 as_jumping.stop()s_noise2.stop().

这些声音单独播放时效果很好,但当一起播放时,它就不起作用了。当第二个声音响起时,第一个声音停止。

我认为使用new Sound()不同的变量名意味着这些声音将单独存在。相反,它就像一种声音覆盖了另一种声音。

我究竟做错了什么?

(注意:我并不想在这里播放大量声音。在我的测试中,最多同时有 3 个声音。)

更新:经过进一步测试,如果我删除我拥有的一个背景声音,这些声音会正常播放。所以我似乎达到了某种极限。奇怪的是,目前我最多同时播放 3 或 4 个声音。从我读到的至少8个声音应该没问题!
(注意:使用 Flash CS4、actionscript 2,并为 Flash Player 8 导出。)

4

1 回答 1

1

好的,看来问题是由于停止功能使用不当引起的。

显然,s_jumping.stop();将停止所有声音,而不仅仅是“s_jumping”声音。

要只停止一种声音,您必须将其标识符(在“export for ActionScript”下的声音属性中声明)作为参数传递:

s_jumping.stop('s_jump');

我不太了解这里的逻辑,但至少它现在按预期工作。^^

于 2012-09-26T09:11:10.550 回答