当我在手机上试用我的应用程序时,我注意到了这个奇怪的错误。在我的游戏中,我创建了一个 SKSpriteNode
,然后在几秒钟后将其删除。在所有 iOS 9 设备上,这都能完美运行。但是在 iOS 8 上,整个节点永远不会出现。
- 我试过它是否是图像,但它仍然发生在一个红色的 SpriteNode 上。
- 这不是传统的“红色 X”错误,只是没有显示任何内容
- 我使用最新版本的 Xcode:版本 8.1 (8B62) 和 Swift 3。
- 只要是 iOS 9 ,模拟器和真实手机都会发生这种情况
- 它发生在 32 位(iPhone 5s)和 64 位(iPhone 6)上
这是与节点相关的所有代码:
var forceShield: SKSpriteNode! //outside of the function to make it globally accessable
forceShield = SKSpriteNode(imageNamed: "forceShield") //SKSpriteNode(color: UIColor.red, size: CGSize(width: 50, height: 50)) gave the exact same error
forceShield.position = ship.position
forceShield.xScale = 0.4 * scaleFactor
forceShield.yScale = 0.4 * scaleFactor
forceShield.zPosition = 3
let distanceConstraint = SKConstraint.distance(SKRange(lowerLimit: 0.0, upperLimit: 0.0), to: ship)
let orientConstraint = SKConstraint.orient(to: ship, offset: SKRange(lowerLimit: 0.0))
forceShield.constraints = [orientConstraint, distanceConstraint]
addChild(forceShield)
并在另一个函数中删除它
forceShield.removeFromParent()
Scalefactor
是一个始终大于或等于 1 的数字,用于针对不同设备缩放节点。 Ship
是另一个节点,后面跟着力盾(这就是约束的作用)。
如何让这个节点出现在每台设备上?
最佳答案
这个错误是由 distanceConstraint
引起的,它显然在 iOS 8 中没有被正确处理。我通过将 forceShield
添加为 ship
的 subview 来解决此问题,这会自动使其正确地遵循 ship
。这个解决方案当然并不总是很有用,但它对我有用。
关于ios - SKSpriteNode 仅在 iOS 9 或更高版本上可见,无论是在模拟器还是在真实手机中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40978686/