播放多个帧而不重新启动as3的背景音乐

时间:2014-11-10 06:28:17

标签: actionscript-3 flash-cc

我一直在努力让背景音乐在as3中为我的游戏工作。我想要的是在菜单屏幕上有一个音轨,在游戏中有另一个音轨。在菜单框架(我的程序中的第2-5帧)之间切换时,菜单音乐不应停止或创建新实例,但在进入游戏级别框架时应停止(框架6-10)。

要做到这一点,我创造了一个'音乐'时间轴上的图层,并在第2帧上创建了一个关键帧,并带有代码:

music=introMusic.play();

其中'音乐'是一个声音通道变量

然而,当导航到帮助菜单然后回到标题(第2帧)时,尽管没有离开代码所在的音乐层的帧,但是该歌曲的另一个实例开始播放。

我知道如何停止播放soundChannel,但我希望声音在所有菜单屏幕中继续播放,直到播放器实际进入关卡状态。

P.S。我对as3相对较新,我假设一层上关键帧(从圆到正方形)之间的空白区域只是一帧?我突然意识到这可能是错的?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果你想做这样的事情,你一定要把声音从你的时间线上取下来。确保所有声音都在单独的声道中,并使用事件侦听器检测某个声音何时停止(完成)播放。请务必在明确要求声音在游戏中停止之前删除事件侦听器。

[sound channel].addEventListener(Event.SOUND_COMPLETE,replaySound);

function replaySound(e:Event)
{
    [sound channel].play();
}

这样的东西会起作用(我只是快速编写它,所以你要在实现它之前检查as3文档)。

然后确保在切换帧或其他任何内容时(例如,当您想要播放游戏中的声音时),在停止声音之前移除事件侦听器。

对任何其他声音都这样做。

有关详细信息,请参阅soundChannel文档中的the soundComplete event