在as3中停止嵌入的声音

时间:2013-04-22 10:20:44

标签: actionscript-3 audio

我的声音嵌入在资产类

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

声音在另一个类中播放

Assets.gameLoop.play()

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

1 个答案:

答案 0 :(得分:0)

使用此方法,您将丢失可用于停止正在播放的声音的SoundChannel对象的链接。您做了两件事:首先,创建一个类型为SoundChannel的公开变量,并为其分配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;
}