2

メイン メニュー (「MainMenuScene」) とゲーム シーン (「MyScene」) のさまざまなシーンを持つスプライト キット ゲームがあります。ユーザーがゲームをプレイしている間、バックグラウンド ミュージックを無限に再生しています。しかし、プレーヤーがゲームを停止してメイン メニューに戻りたい場合、バックグラウンド ミュージックが再生され続けます。やめさせるにはどうしたらいいですか?試してみ[self removeAllActions]ましたが、うまくいきませんでした。

私のシーン:

    @implementation MyScene
{
    SKAction *_backgroundMusic;
}

-(id)initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {

        self.backgroundColor = [SKColor colorWithRed:0.15 green:0.5 blue:0.3 alpha:1.0];
    }
    //Here I make the endless background music 
_backgroundMusic = [SKAction playSoundFileNamed:@"Background 2.m4a" waitForCompletion:YES];
    SKAction * backgroundMusicRepeat = [SKAction repeatActionForever:_backgroundMusic];
    [self runAction:backgroundMusicRepeat];
    return self;
}

- (void)selectNodeForTouch:(CGPoint)touchLocation
{
    SKSpriteNode *touchedNode = (SKSpriteNode *)[self nodeAtPoint:touchLocation];
    if ([_MainMenuButton isEqual:touchedNode]) {
        SKScene *mainMenuScene = [[MainMenuScene alloc]initWithSize:self.size];
        [self.view presentScene:mainMenuScene];
//Here is where the music should stop, when the player presses the 'return to main menu' button
    } 
}
4

2 に答える 2

0

これを試して音楽を再生してください:

  [self runAction:backgroundMusicRepeat withKey:@"bgmusic"];

そしてこれを停止します:

  [self removeActionForKey:@"bgmusic"];

アップデート

SKAction * backgroundMusicRepeat = [SKAction playSoundFileNamed:@"Background 2.m4a" waitForCompletion:YES];
backgroundMusicRepeat = [SKAction repeatActionForever:backgroundMusicRepeat];

 [self runAction:backgroundMusicRepeat];

私は自分のプロジェクトでこれらのコードを実行しましたが、うまくいくようです。しかし、あなたのやり方ではありません。ビューを終了したときにのみ停止します。必要さえありませんremoveActionForKey[self removeActionForKey:@"bgmusic"];シーンでは機能しません。

したがって、同じビューの異なるシーンを切り替えるときに音を止めたい場合は、AVAudioPlayer を使用することをお勧めします。

私はまた、stackoverflowの他のいくつかの質問にあなたと同じ問題があることを発見しまし た.SpriteKitを使用するときにサウンドを一時停止する方法 と、これ: Spritekit停止サウンド はどちらもAVAudioPlayerに使用されます.

これらのリンクのコメントの1つが言ったように:効果音を再生するにはplaySoundFileNamedメソッドを使用する必要があります...爆発音のような1秒または2秒の短いもの-バックグラウンドサウンドには使用しないでください。

于 2014-05-13T20:08:07.567 に答える