【发布时间】:2017-10-23 13:31:09
【问题描述】:
我发现了一个从 iOS 11 开始的奇怪问题,我的应用程序不会更新我的 SKReferenceNode 上的精灵。基本上,我有一个带有页眉和页脚的“覆盖”节点(我用于多个场景的 SKS 文件)。在标题中,有一个得分栏,当玩家得分时会扩大。我正在使用 SKAction 为得分栏设置动画。从 iOS 11 开始,评分栏不再出现。它发生在模拟器和设备上。有趣的是,如果我通过调试器暂停/恢复应用程序,评分栏会立即出现。我能够将问题简化为以下代码。
import SpriteKit
var overlayNode:SKNode?
var header = SKSpriteNode()
var scoreBar:SKSpriteNode?
var scaleX:CGFloat = 0.3
class GameScene: SKScene {
override func didMove(to view: SKView) {
let path = Bundle.main.path(forResource: "SceneOverlay", ofType: "sks")
let overlay = SKReferenceNode(url: URL(fileURLWithPath: path!))
self.addChild(overlay)
overlayNode = overlay.children.first
header = overlayNode!.childNode(withName: "header") as! SKSpriteNode
scoreBar = SKSpriteNode(imageNamed: "redBar")
scoreBar?.position = CGPoint(x: 0, y: 0)
scoreBar?.zPosition = 10
scoreBar?.anchorPoint = CGPoint(x: 0, y: 0.5)
scoreBar?.xScale = 0
header.addChild(scoreBar!)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
scaleX += 0.1
let scoreBarExpand = SKAction.scaleX(to: scaleX, duration: 0.8)
scoreBar!.run(scoreBarExpand)
print ("Expanding score bar to \(scaleX)")
}
}
overlay SKS 文件就是这样的:
如果您在 iOS 11 模拟器或设备上运行此代码,然后点击屏幕,则每次点击时,得分栏都会出现并放大 10%。然而,你什么也看不到。然后,您可以在 Xcode 调试器中暂停和恢复应用程序,该栏将立即出现并展开。同样,此问题不会出现在 iOS 10 设备/模拟器上。
对这里发生的事情有什么想法吗?
提前致谢。
【问题讨论】:
-
你取消暂停你的场景了吗?由于某种原因,它们现在开始处于暂停状态
标签: ios iphone xcode sprite-kit