当声音文件播放SKAction时,白屏会在启动时出现

时间:2017-12-01 05:36:17

标签: swift sprite-kit skaction

我正在尝试在GameScene.swift文件中播放背景声音文件。但每当我这样做并调用run.SKAction时,屏幕变白,我听到很多静电,直到它崩溃。当我注释掉run.SKAction时,游戏正常启动。我已经尝试将文件格式更改为WAV,MP3,AAC,CAF。但同样的事情发生了。我查看是否拼错了,但我没有。

它给我一条消息说:"来自调试器的消息:由于内存问题终止"

重要提示:" waitForCompletion设置为TRUE,它似乎在音轨开头有一点静电然后正常播放。但是当" waitForCompletion"设置为FALSE我得到白色屏幕。我也有时会收到一条消息说:

SKAction:加载声音资源时出错:" Entry.m4a"

我尝试了几种不同的音轨文件,但总会发生。

这是GameScene()的开头:

class GameScene: SKScene {


var SpaceShip2 = SKSpriteNode(imageNamed:"IntroSpaceShip")


var GameSceneSound = SKAction.playSoundFileNamed("BackgroundSound.wav", waitForCompletion: false) 


}

这是我用来调用声音的功能:

func playsound(soundVariable: SKAction){

    run(SKAction.repeatForever(soundVariable))
}

这就是我打电话的时候:

override func didMove(to view: SKView) {

    playsound(soundVariable: GameSceneSound)
}

有人可以帮助我!

提前谢谢!

1 个答案:

答案 0 :(得分:2)

由于waitForCompletion设置为false,因此认为该操作在运行时已立即完成。由于这是repeatForever动作,因此动作的下一次重复在播放声音的第一个动作完成之前运行。第二次重复运行,立即导致第三次重复,这导致第四次重复,等等。最终你用所有SKActions填满了太多内存,iOS终止了应用程序。

我建议将waitForCompletion设置为true。这样,在第一个动作完成播放声音之前,动作的第二次重复才会开始。

希望这有帮助!