【问题标题】:How to loop music with SKAction?如何使用 SKAction 循环播放音乐?
【发布时间】:2014-04-24 10:44:47
【问题描述】:

我想用 SKAction 循环播放我的背景音乐,但是当我切换到另一个场景时,音乐在一行后停止。有没有办法开始循环并在不同的场景中继续播放?

现在代码被放置在 MyScene 的 init 方法中 - 这是正确的地方吗?也许 didFinishLaunchingWithOptions?

这是我尝试过的:

if (delegate.musicOn == YES && delegate.musicIsPlaying == NO) {

    SKAction *playMusic = [SKAction playSoundFileNamed:@"loop.wav" waitForCompletion:YES];
    SKAction *loopMusic = [SKAction repeatActionForever:playMusic];
    [self runAction:loopMusic];

    delegate.musicIsPlaying = YES;


}

【问题讨论】:

  • 声音动作只不过是一种快速方便的 hack,为了更好地控制音频,您应该使用 AVAudioPlayer 或者我个人建议使用 OpenAL 和 AVAudio 的包装器,即 ObjectAL。

标签: ios audio sprite-kit skaction skscene


【解决方案1】:

您不能使用SKActions 在场景中播放背景音乐。请改用AVAudioPlayer

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"music" ofType:@"mp3"];
NSError *error;
AVAudioPlayer *gameSceneLoop = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:filePath] error:&error];
if (error) {
    NSLog(@"Error in audioPlayer: %@", [error localizedDescription]);
} else {
    gameSceneLoop.numberOfLoops = -1;
    [gameSceneLoop prepareToPlay];
    [gameSceneLoop play];
}

【讨论】:

    【解决方案2】:

    在 iOS 9 中,将 SKAudioNode 用于:

    let backgroundMusic = SKAudioNode(fileNamed: "music.wav")
    self.addChild(backgroundMusic)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      相关资源
      最近更新 更多