我一直在尝试在as3中为我的游戏播放背景音乐。我想要的是有一个菜单屏幕的配乐,另一个在游戏中。在菜单帧(我的程序中的第2-5帧)之间切换时,菜单音乐不应停止或创建新的实例,而应在进入游戏级别帧(第6-10帧)时停止。
为此,我在时间轴上创建了一个“音乐”层,并在第2帧上创建了一个关键帧,并编写了代码:
music=introMusic.play();
其中‘soundChannel’是音乐变量
但是,当导航到“帮助”菜单,然后返回到标题(第2帧)时,歌曲的另一个实例开始播放,尽管没有离开代码所在的音乐层的帧。
我知道如何停止播放soundChannel,但我希望声音继续播放中断通过所有菜单屏幕,直到播放器实际进入一个级别。
附注:我是as3的新手,我假设图层上关键帧(从圆形到正方形)之间的空白空间只是一个帧?我突然想到也许这是错的?
提前谢谢。
发布于 2014-11-10 20:37:50
如果你想做这样的事情,你绝对应该把声音从你的时间线中去掉。确保所有声音都在单独的声道中,并使用事件侦听器来检测某个声音何时停止(完成)播放。在游戏中明确要求声音停止之前,请记住移除事件侦听器。
[sound channel].addEventListener(Event.SOUND_COMPLETE,replaySound);
function replaySound(e:Event)
{
[sound channel].play();
}
像这样的东西可以工作(我只是快速编写了它,所以在实现它之前,您需要检查一下as3文档)。
然后,确保在切换帧或其他任何东西时(例如,当您想要播放游戏中的声音时),在停止声音之前删除事件侦听器。
对任何其他声音执行相同的操作。
有关详细信息,请参阅soundChannel文档上的the soundComplete event。
https://stackoverflow.com/questions/26837984
复制相似问题