2015-03-31 156 views
0

下面的代碼工作(我可以反覆播放聲音無限期):SpriteKit runAction:withKey:與repeatActionForever結合:崩潰的應用程序

SKAction *playMusic = [SKAction playSoundFileNamed:@"sound.m4a" waitForCompletion:NO]; 
SKAction *onRepeat = [SKAction repeatActionForever:playMusic]; 
[myScene runAction:onRepeat]; 

下面的代碼工作(我可以播放聲音,鎖定式設計,稍後訪問):

SKAction *playMusic = [SKAction playSoundFileNamed:@"sound.m4a" waitForCompletion:NO]; 
[myScene runAction:onRepeat withKey:@"BackgroundMusic"]; 

下面的代碼失敗(我不能鍵訪問重複的聲音):

SKAction *playMusic = [SKAction playSoundFileNamed:@"sound.m4a" waitForCompletion:NO]; 
SKAction *onRepeat = [SKAction repeatActionForever:playMusic]; 
[myScene runAction:onRepeat withKey:@"BackgroundMusic"]; 

直到10-15秒後應用程序崩潰(「由於內存錯誤終止」),纔出現奇怪的點擊而不是正在播放的聲音。

有沒有人知道這個問題,或者這種使用情況的組合在任何你知道的地方記錄爲無效?

回答

1

因此,修復方法是更改​​waitForCompletion:YES

SKAction *playMusic = [SKAction playSoundFileNamed:@"sound.m4a" waitForCompletion:YES]; 
SKAction *onRepeat = [SKAction repeatActionForever:playMusic]; 
[myScene runAction:onRepeat withKey:@"BackgroundMusic"]; 

由於playSoundFileNamed長度行動的是0,則繼續嘗試一遍又一遍地播放,導致不愉快的聲音和內存的問題。

我不確定一個重複動作是唯一一個用該鍵註冊的,還是每個人正在重複上一個。只有學術理由非常重要。

相關問題