SKSpriteNode仅在iOS 9或更高版本上可见,无论是在模拟器还是真实手机上?
当我在手机上试用我的应用程序时,我注意到了这个奇怪的错误。在我的游戏中,我创建了一个SKSpriteNode仅在iOS 9或更高版本上可见,无论是在模拟器还是真实手机上?,ios,swift,swift3,skspritenode,Ios,Swift,Swift3,Skspritenode,当我在手机上试用我的应用程序时,我注意到了这个奇怪的错误。在我的游戏中,我创建了一个SKSpriteNode,然后在几秒钟后将其删除。在所有iOS 9设备上,这都能完美地工作。但是在iOS 8上,整个节点从未出现 我试过,如果它是图像,但它仍然发生在只有一个红色的SpriteNode 这不是传统的“红色X”错误,只是什么都没有出现 我使用最新版本的Xcode:Version8.1(8B62)和Swift 3 它发生在模拟器和真实手机上,只要它们在iOS 9下 它发生在32位(iPhone 5s)
SKSpriteNode
,然后在几秒钟后将其删除。在所有iOS 9设备上,这都能完美地工作。但是在iOS 8上,整个节点从未出现
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
是另一个节点,后面跟着forceshield(约束就是这样做的)
如何使此节点出现在每个设备上?此错误是由iOS 8中未正确处理的
距离约束引起的。我通过添加forceShield
作为ship
的子视图来修复此问题,该子视图自动使其正确跟随ship
。这个解决方案当然并不总是很有用,但它对我很有用。这个错误是由距离约束造成的,显然在iOS 8中没有正确处理该约束。我通过添加forceShield
作为ship
的子视图来修复此问题,该子视图自动使其正确跟随ship
。这个解决方案当然并不总是很有用,但对我来说很有用。这是在所有iOS 8设备上,还是仅在32位设备上?很好,你能详细说明哪些是32位,哪些是63位吗?另外,它发生在Iphone 5s(iOS 8.3)和Iphone 6(iOS 8.3)上。然后它也是64位的,而不是我所想的只影响运行8.0和8.1的32位设备的已知问题。好的,我会在我的问题中提出,如果你试图消除限制,它会起作用吗?这是在所有iOS 8设备上,还是仅在32位设备上?好的一点,你能详细说明哪些是32位的,哪些是63位的吗?同样,它也发生在Iphone 5s(iOS 8.3)和Iphone 6(iOS 8.3)上。然后它也是64位的,而不是我所想的只影响运行8.0和8.1的32位设备的已知问题。好的,我将把这一点也放在我的问题中,如果你试图消除限制,它会起作用吗?