我正在使用SpriteKit框架完成iOS游戏。我想知道在用户播放时是否有任何方法可以循环播放背景音乐。 SpriteKit包含一个简单的音乐播放器,但它不允许循环播放音乐......所以我想知道如何实现这一目标。谢谢!
答案 0 :(得分:6)
您可以将AVAudioPlayer
用于此目的:
在你的.h:
#import <AVFoundation/AVFoundation.h>
并将以下内容添加到interface
AVAudioPlayer *player;
在.m中,使用audio oath url初始化播放器:
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"bg_music"
ofType:@"mp3"]];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
player.numberOfLoops = -1;
当您需要播放音频时,您可以致电:
[player play];
注意:强> &#34; numberOfLoops&#34;是声音在到达结尾时返回到开头的次数。
保持编码................:)
答案 1 :(得分:5)
我宁愿使用SKAction:
[SKAction repeatForever:[SKAction playSoundFileNamed:@"hello.caf" waitForCompletion:YES]];
或:
[SKAction repeatAction:[SKAction playSoundFileNamed:@"hello.caf" waitForCompletion:YES]
count:100];
Apple Developer的更多信息。
答案 2 :(得分:2)
你可以用两种方式做到这一点。
首先:
1)@import AVFoundation;
//在AppDelegate文件中导入
2)@property (nonatomic) AVAudioPlayer * backgroundMusicPlayer;
//在AppDelegate文件中定义属性
NSError *error;
NSURL * backgroundMusicURL = [[NSBundle mainBundle] URLForResource:@"bg" withExtension:@"wav"];
self.backgroundMusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:backgroundMusicURL error:&error];
self.backgroundMusicPlayer.numberOfLoops = -1;
[self.backgroundMusicPlayer prepareToPlay];
4)现在你可以在任何类中使用backgroundMusicPlayer属性,如下面的代码
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.backgroundMusicPlayer play];
第二:
如果您想使用SKAction,请使用以下代码
SKAction *wait = [SKAction waitForDuration:10.0];
SKAction *performSelector = [SKAction performSelector:@selector(playEffectBgSounds) onTarget:self];
SKAction *sequence = [SKAction sequence:@[performSelector, wait]];
SKAction *repeat = [SKAction repeatActionForever:sequence];
[self runAction:repeat];
-(void)playEffectBgSounds{
//Play Sound
[self runAction:[SKAction playSoundFileNamed:@"chick.mp3" waitForCompletion:NO]];
}
答案 3 :(得分:0)
AVAudioPlayer *myplayer = ...
[myplayer setNumberOfLoops: INFINITY];
答案 4 :(得分:0)
在你的场景类中添加:
方法1:
self.run(SKAction.repeatForever(SKAction.playSoundFileNamed("music.mp3", waitForCompletion: true)))
方法2:
self.addChild(SKAudioNode(fileNamed: "music.mp3"))