0

我的声音作为 Assets 类嵌入

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

声音在另一个班级播放

Assets.gameLoop.play()

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

4

1 回答 1

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;
}
于 2013-04-22T10:44:49.873 回答