swift - 播放声音文件时启动时出现白屏 SKAction

标签 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)
}

有人可以帮帮我吗?

提前谢谢您!

最佳答案

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

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

希望这有帮助!

关于swift - 播放声音文件时启动时出现白屏 SKAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587235/

相关文章:

ios - 更改 map 中的 compass 图像

ios - Skobbler SKMapView 和 UIPanGestureRecognizer

swift - 如何沿圆形路径旋转 Sprite ?

xcode - 删除与玩家 Sprite 碰撞的节点

ios - 未检测到 SKAudioNode 完成(使用 SKAction)

Swift-在一个角度上简单地制作一个 SKNode "move forward"

ios - SKAction.repeatActionForever 只在第一次调用时计算随机数

ios - 访问闭包之外的数据

ios - 使用未弃用代码的部署目标时,弃用代码是否会产生负面影响?

ios - SpriteKit 中的 ScrollView