以下代码有效(我可以无限期地重复播放声音):
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秒后崩溃("由于内存错误&#34而终止;)。
有没有人知道这个问题,或者这种使用组合在您知道的任何地方都记录为无效?
答案 0 :(得分:1)
所以,修复方法是更改 waitForCompletion:是。
SKAction *playMusic = [SKAction playSoundFileNamed:@"sound.m4a" waitForCompletion:YES];
SKAction *onRepeat = [SKAction repeatActionForever:playMusic];
[myScene runAction:onRepeat withKey:@"BackgroundMusic"];
由于playSoundFileNamed
动作长度为0,它会继续尝试反复播放,导致不愉快的声音和记忆问题。
我不确定一个重复动作是否是唯一一个用该键注册的动作,或者每个正在播放的动作是否正在踩踏前一个动作。只是出于学术原因才非常重要。