ios - SKNode 的动作运行完成块不会被调用
问题描述
我有一个 watchOS 4 应用程序,它在 UI 顶部显示 SpriteKit 动画 (SKActions)。一切都在模拟器和设备上运行良好,最初几次,然后在应用程序处于后台并启动一段时间后,动画只是冻结并且不会调用最持久动画的完成块。知道可能是什么问题吗?
这就是我执行操作的方式,调用者正在等待completion
关闭以隐藏 spritekit 场景:
private func runActions(with icon: SKShapeNode?, completion: @escaping () -> Void) {
if let icon = icon, let scaleAction = scaleAction, let bg = background {
self.label?.run(fadeInOutAction)
icon.run(scaleAction)
icon.run(fadeInOutAction)
bg.run(backgroundAction, completion: completion)
} else {
completion()
}
}
是的,我知道SKScene
当应用程序移动到后台时它会暂停。我在willActivate
我的 InterfaceController 中这样做:
if scene.scene?.isPaused == true {
scene.scene?.isPaused = false
}
我想强调的是,这总是首先起作用。在应用程序后台运行一段时间后,它开始失败。特别是如果我从复杂性启动应用程序并尝试立即触发这些动画,那么就会发生这种冻结。
解决方案
我可以回答我自己的问题吗?我想我可以吗?开始:
我终于解决了这个问题。事实证明,WKInterfaceScene
WatchKit 中的 ALSO 还具有您有时isPaused
需要打开的属性。false
所以现在在willActivate
我的 InterfaceController 中,我也会检查它,false
如果它是true
. 自从我做出这个改变后,我再也没有看到任何打嗝、冻结或任何奇怪的东西了。
案子结案了,我猜。我把这个留给可能面临这个问题的后代。
推荐阅读
- c++ - C++中模板的循环引用
- python - 获取测验答案的所有可能组合
- grafana - Grafana 无法连接到 InfluxDB
- java - 带有 EmbeddedDatabaseBuilder 和现有数据源的 Simple-JNDI VS SimpleNamingContextBuilder
- javascript - 即使我在 express.js 中正确使用了下载功能,我提到的文件也没有被下载
- firebase - 如何使用 Mongo Atlas 将 Firebase Web App 列入白名单?
- java - 无法将数据写入 SQLite 数据库 Android Studio (Java)
- rust - 如何从字符串中的特定索引中删除字符?
- python - python 3.9 在windows上安装失败
- python - Date split pandas