0

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

为此,我在时间轴上创建了一个“音乐”层,并在第 2 帧上制作了一个关键帧,并使用以下代码:

music=introMusic.play();

其中“音乐”是 soundChannel 变量

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

我知道如何阻止 soundChannel 播放,但我希望声音在所有菜单屏幕中继续播放,直到玩家真正进入关卡。

PS我对as3比较陌生,我假设图层上关键帧(从圆形到方形)之间的空白空间只是一帧?我突然想到这可能是错的?

提前致谢。

4

1 回答 1

1

如果你想做这样的事情,你绝对应该把声音从你的时间线中删除。确保所有声音都在不同的声道​​中,并使用事件侦听器来检测某个声音何时停止(完成)播放。请记住在明确要求声音在游戏中停止之前移除事件侦听器。

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

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

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

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

对任何其他声音做同样的事情。

有关详细信息,请参阅soundChannel 文档上的soundComplete 事件

于 2014-11-10T12:37:50.103 回答