[英]Playing music from a SKAction
我正在嘗試將背景音樂添加到我的游戲中。 我有一個將音樂靜音的開關,當您再次點擊它時,它將播放音樂。 這是播放音樂的代碼
var backgroundMusic = SKAction.playSoundFileNamed("Background.wav", waitForCompletion: true)
runAction(SKAction.repeatActionForever(backgroundMusic), withKey: "music")
我知道應將waitForCompletion設置為false,以在您點擊開關時停止音樂。 但是,當我將其設置為false時,音樂就不會播放,就像靜態聲音一樣。
self.removeActionForKey("music")
那就是我用來停止音樂的代碼。 我想知道您是否可以將音樂靜音直到曲目結束,還是在SpriteKit中有另一種永久播放音樂的方法。
waitForCompletion
:如果為true
,則此action
的持續時間與音頻播放的長度相同。 如果為false
,則認為該action
已立即完成。
將waitForCompletion
設置為false
將會創建一個持續時間為0
的動作。 因此,永遠重復動作將無法正常運行。
您必須等待播放的持續時間,然后才能從頭開始再次播放音樂。 因此,將waitForCompletion
設置為true
,
var backgroundMusic = SKAction.playSoundFileNamed("Background.wav", waitForCompletion: true)
您可以使用removeActionForKey
停止音樂。
我建議使用ObjectAL代替Spritekit進行背景音樂。 或者這是我從SKUtils借來的用於背景音樂的簡單方法:
-(AVAudioPlayer*)setupSound:(NSString*)file volume:(float)volume{
NSError *error;
NSURL *url = [[NSBundle mainBundle] URLForResource:file withExtension:nil];
AVAudioPlayer *s = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
s.numberOfLoops = -1;
s.volume = volume;
[s prepareToPlay];
return s;
}
然后,您將其稱為如下:
...
AVAudioPlayer *bgplayer = [self setupSound:@"Background.wav" volume:1.0];
...
[bgplayer play];
...
[bgplayer pause];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.