我的声音作为Assets类嵌入

[Embed(source="../../assets/gameloop.mp3")]
        private static var gameLoopSound:Class;
        public static var gameLoop:Sound;

声音在另一个类中播放
Assets.gameLoop.play()

但是如何停止这种声音?在我看来,.stop()方法将是显而易见的方法,但这似乎不起作用。

最佳答案

使用这种方法,您将失去指向SoundChannel对象的链接,该链接可用于停止正在播放的声音。您要做两件事:首先,创建一个SoundChannel类型的公共(public)变量,并为其分配Assets.gameLoop.play()调用的结果值。其次,在需要停止播放音乐的地方放置一个yourVariable.stop()。您很可能会在Assets类中使用另一个变量。但是,为了获得更好的安全性,请制作一对静态函数来处理这对变量,如下所示:

private static var gameLoopChannel:SoundChannel;
private static var gameLoop:Sound=new gameLoopSound();

public static function playGameLoop():void {
    if (gameLoopChannel) return;
    gameLoopChannel=gameLoop.play();
}
public static function stopGameLoop():void {
    if (!gameLoopChannel) return; // no sound is being played
    gameLoopChannel.stop();
    gameLoopChannel=null;
}

关于actionscript-3 - 停止as3中的嵌入声音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16144701/

10-11 08:59