我正在制作一个小型Flash游戏,我遇到了同时播放不同声音的麻烦。
例如,当玩家通过塔时,会播放锣音; 当玩家跳跃时,会播放跳跃声。 这两个动作可以同时发生,如果是这种情况,两个声音应该一起播放(重叠)。
这些声音声明如下:
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。)
答案 0 :(得分:1)
好的,问题似乎是由于停止功能使用不当造成的。
显然,s_jumping.stop();
会停止所有声音,而不仅仅是“s_jumping”声音。
要停止一个声音,您必须将其标识符(如“for Action for Action”中的声音属性中声明的那样)作为参数传递:
s_jumping.stop('s_jump');
我真的不明白这里的逻辑,但至少它现在按预期工作了。 ^^