3

当两个节点发生碰撞时,我试图删除重复播放的 MP3。

SKAction* gameBeat = [SKAction playSoundFileNamed:@"gameBeat.mp3" waitForCompletion:YES];
SKAction* gameBeatLoop = [SKAction repeatActionForever: gameBeat];
[self runAction:gameBeatLoop withKey:@"gameBeatzz"];

然后稍后在我的代码中我有碰撞工作我放:

[self removeActionForKey:@"gameBeatzz"];

但它会等到 MP3 播放完毕,这是我不想要的。

如果我将 waitForCompletion 更改为 NO,则 APP 就会变得一团糟,不会做任何事情。

我将如何立即删除 Mp3 而不是等待 MP3 文件完成

4

1 回答 1

1

如果您将bool 设置为 NO,则应用程序不会执行任何操作,这是正常的。waitForCompletion这是因为该动作被认为已经立即完成。

for 的操作playSoundFileNamed是不可逆的,并且在移除时会对场景进行最终更改,它会一直持续到最后......当您执行该方法时,
有些SKAction会完全从节点中移除removeAction,但有些会继续工作。

创建它playSoundFileNamed是为了执行短声音而不是背景声音。

我建议使用AVAudioPlayer可以让您更好地控制音乐的 。

于 2014-02-21T11:23:48.003 回答