SKCameraNode 函数 containsNode() 和 containedNodeSet() 没有按预期工作
SKCameraNode functions containsNode() and containedNodeSet() aren't working as expected
我试图在 iOS 9.0 中使用新的 SKCameraNode,但我遇到相机总是为 containsNode() 返回 false,为 containedNodeSet() 返回一个空集。
为了测试,我使用 SpriteKit 模板创建了一个空项目并添加了一个摄像头。我唯一改变的是在 GameScene 中:
class GameScene: SKScene {
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
override func didMoveToView(view: SKView) {
/ Setup your scene here */
myLabel.text = "Hello, World!";
myLabel.fontSize = 65;
myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
let camera = SKCameraNode()
camera.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
self.addChild(camera)
self.addChild(myLabel)
self.camera = camera
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/ Called when a touch begins */
for touch in touches {
let location = touch.locationInNode(self)
print(camera!.containsNode(myLabel))
print(camera!.containedNodeSet())
}
}
override func update(currentTime: CFTimeInterval) {
/ Called before each frame is rendered */
}
}
日志中的输出是:
false
[]
既然它是场景中的一个节点(并且清晰可见),它不应该在集合中返回 true 和 myLabel 吗?
我做错了什么吗?感谢您的帮助!
就在有人说模拟器不准确之前,我在 iPad mini 2 上 运行 这个。 :P
这似乎是一个错误,Apple 已在 iOS 9 beta 3 中识别出它。我将编辑我的答案以确认它是否有效。
编辑:有效!更新您的开发设备,它应该可以工作。
我试图在 iOS 9.0 中使用新的 SKCameraNode,但我遇到相机总是为 containsNode() 返回 false,为 containedNodeSet() 返回一个空集。
为了测试,我使用 SpriteKit 模板创建了一个空项目并添加了一个摄像头。我唯一改变的是在 GameScene 中:
class GameScene: SKScene {
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
override func didMoveToView(view: SKView) {
/ Setup your scene here */
myLabel.text = "Hello, World!";
myLabel.fontSize = 65;
myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
let camera = SKCameraNode()
camera.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
self.addChild(camera)
self.addChild(myLabel)
self.camera = camera
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/ Called when a touch begins */
for touch in touches {
let location = touch.locationInNode(self)
print(camera!.containsNode(myLabel))
print(camera!.containedNodeSet())
}
}
override func update(currentTime: CFTimeInterval) {
/ Called before each frame is rendered */
}
}
日志中的输出是:
false
[]
既然它是场景中的一个节点(并且清晰可见),它不应该在集合中返回 true 和 myLabel 吗? 我做错了什么吗?感谢您的帮助!
就在有人说模拟器不准确之前,我在 iPad mini 2 上 运行 这个。 :P
这似乎是一个错误,Apple 已在 iOS 9 beta 3 中识别出它。我将编辑我的答案以确认它是否有效。
编辑:有效!更新您的开发设备,它应该可以工作。