【问题标题】:music not looping with AVAudioPlayer音乐不使用 AVAudioPlayer 循环播放
【发布时间】:2014-12-11 11:20:00
【问题描述】:

在我的主菜单实现文件的“initWithSize”中,我输入了播放音乐的代码。我弹出一个加载屏幕,然后加载主菜单场景。当加载屏幕弹出时,它开始播放音乐,但加载屏幕永远不会消失,我希望音乐循环播放而不是循环播放。我真的不知道这里发生了什么。

    NSError *error;
    NSURL *soundURL = [[NSBundle mainBundle] URLForResource:@"POL-parallel-fields-short" withExtension:@"mp3"];
    AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];
    [player setVolume:0.1];
    [player prepareToPlay];

    SKAction*   playAction = [SKAction runBlock:^{
        [player play];
        }];
    SKAction *playMusic = [SKAction repeatActionForever:playAction];

[self runAction:playMusic];

【问题讨论】:

  • 我不太明白。 [self runAction:[SKAction repeatActionForever:[SKAction sequence:@[playAction, [SKAction waitForDuration:musicTime]]]];试试这个,也许这会奏效。

标签: objective-c audio sprite-kit avaudioplayer


【解决方案1】:

我不认为你的“循环”方法是正确的......

您无需为此创建操作,
试试把你的代码改成这个——

NSError *error;  
NSURL *soundURL = [[NSBundle mainBundle] URLForResource:@"POL-parallel-fields-short" withExtension:@"mp3"];  
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];  
[player setVolume:0.1];  
[player prepareToPlay];  
player.numberOfLoops = -1;  
[player play];

numberOfLoops 是一个属性,用于设置音频将播放的循环次数。
从苹果的文档中- 0 是默认值,它将播放一次音频。
任何正数都将设置播放次数。
任何负数都会导致音乐无限循环,直到显式调用stop

我不知道为什么你的加载屏幕没有消失,
由于您没有包含任何与之相关的代码。

但是上面的方法可以解决你的音乐问题。

【讨论】:

  • 谢谢!对于加载屏幕,没有与之相关的代码,因为 Xcode 会自动执行此操作。
  • 哦...我以为您正在创建自定义加载屏幕...您的意思是它卡在应用程序开头的启动屏幕上?它是否在模拟器和设备上都发生?我在某个地方读到有人抱怨同样的问题,后来他发现他的应用程序在显示第一个视图之前陷入了无限循环。你能检查你的代码看看这里不是这样吗?
  • 我只是试着让它不循环,它仍然有同样的问题。因此,当我启动我的应用程序时,会弹出启动图像并开始播放音乐。然后什么都没有发生,它停留在启动图像上,如果我让音乐循环,它会继续播放,如果我没有循环,它会完成播放,但仍然没有任何反应。
  • 正如我所提到的,遇到相同问题的其他人发现他在视图出现之前意外创建了无限循环,导致应用程序卡在启动画面。你能检查一下最初运行的代码吗?您可能应该关注viewDidLoadviewWillAppear
  • 以上就是你的initWithSize方法了?我还建议放置断点以确保您不会在某个地方陷入循环......
猜你喜欢
  • 2011-11-29
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
相关资源
最近更新 更多