我在 AS3 游戏中遇到了一个奇怪的问题,即声音相互干扰。
游戏世界中的每个敌人都有一个包含其图形和声音的影片剪辑;游戏代码调用 gotoAndPlay() 以播放具有相应声音的特定动画。(影片剪辑是在 Flash 中制作的,并且 .swc 被导入到 Flashdevelop 项目中)
问题是当屏幕上同时出现多个特定类型的敌人时,他们的声音会互相“踩”:如果敌人 A 和 B 属于同一类型,而 A 正在播放一个声音,B 将无法播放该声音 - gotoAndPlay 产生正确的动画,但声音不播放。
同样,如果 A 正在播放循环声音,而 B 播放包含停止声音事件的帧,它将停止 A 的循环。
似乎很清楚,正在发生的事情是 Flashplayer 只为每个影片剪辑类型分配一个频道,而不是每个影片剪辑实例,但是谷歌并没有真正向我展示任何东西。
这种情况是否有最佳实践?(即同一影片剪辑的多个实例,其时间轴上有声音+动画)我做错了什么?!
谢谢你的时间。
[编辑]
为了更好地解释我的意思,假设有一个 Baddie 电影剪辑,其中包含几个动画,例如敌人奔跑、蹲伏、跳跃、开枪。
影片剪辑中有两层,一层用于图形(动画),一层用于声音。
在第 20 帧有一个枪口闪光(在动画层上)和相应的枪声(在声音层上);在第 40 帧有一个跳跃动画和相应的跳跃声音。
我的问题是:如果舞台上同时有两个或多个这样的影片剪辑,其中一个正在播放枪声,其他的就不会播放枪声(他们会虽然仍然正确动画)。
Flashplayer 似乎只为某个影片剪辑的所有实例分配一个音频通道。这似乎不是预期的行为,因为它没有用,所以我猜我在嵌入方面搞砸了(也许有一个参数或标志隐藏在某处让我说“给每个实例自己的声音通道“?)