2013-04-22 65 views
0

我的声音被嵌入作为资产类停球在AS3中嵌入的声音

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

的声音在另一个类

Assets.gameLoop.play() 

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

回答

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; 
} 
+0

优秀 - 非常感谢。 – LeBlaireau 2013-04-22 10:58:44