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、再生中のサウンドを停止するために使用できるオブジェクトへのリンクが失われます。2 つのことを行います。まず、一般に公開されているタイプの変数を作成し、 callSoundChannelの結果値を割り当てAssets.gameLoop.play()ます。次に、yourVariable.stop()その音楽を停止する必要がある場所に a を配置します。ほとんどの場合、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 に答える