我一直在努力让背景音乐在as3中为我的游戏工作。我想要的是在菜单屏幕上有一个音轨,在游戏中有另一个音轨。在菜单框架(我的程序中的第2-5帧)之间切换时,菜单音乐不应停止或创建新实例,但在进入游戏级别框架时应停止(框架6-10)。
要做到这一点,我创造了一个'音乐'时间轴上的图层,并在第2帧上创建了一个关键帧,并带有代码:
music=introMusic.play();
其中'音乐'是一个声音通道变量
然而,当导航到帮助菜单然后回到标题(第2帧)时,尽管没有离开代码所在的音乐层的帧,但是该歌曲的另一个实例开始播放。
我知道如何停止播放soundChannel,但我希望声音在所有菜单屏幕中继续播放,直到播放器实际进入关卡状态。
P.S。我对as3相对较新,我假设一层上关键帧(从圆到正方形)之间的空白区域只是一帧?我突然意识到这可能是错的?
提前致谢。
答案 0 :(得分:0)
如果你想做这样的事情,你一定要把声音从你的时间线上取下来。确保所有声音都在单独的声道中,并使用事件侦听器检测某个声音何时停止(完成)播放。请务必在明确要求声音在游戏中停止之前删除事件侦听器。
[sound channel].addEventListener(Event.SOUND_COMPLETE,replaySound);
function replaySound(e:Event)
{
[sound channel].play();
}
这样的东西会起作用(我只是快速编写它,所以你要在实现它之前检查as3文档)。
然后确保在切换帧或其他任何内容时(例如,当您想要播放游戏中的声音时),在停止声音之前移除事件侦听器。
对任何其他声音都这样做。
有关详细信息,请参阅soundChannel文档中的the soundComplete event。