SKNode containsPoint 不工作
SKNode containsPoint is not working
我正在尝试创建一个切换场景的按钮。我知道切换场景的代码,但我用来通过按钮执行此操作的代码不起作用。
更新:我的代码在第一个场景中工作,但是当我在另一个场景中使用相同的代码时(我切换了按钮和场景)它不起作用。
有人知道为什么吗?
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let gamestartScene = GameStartScene(size: self.frame.size)
var location = CGPoint(x: 0, y: 0)
var touch = touches.anyObject() as UITouch
location = touch.locationInView(self.view)
if menuButton.containsPoint(location){
self.removeChildrenInArray([menuButton,replayButton,highScoreLabel,scoreLabela])
self.view?.presentScene(gamestartScene)
score = 0
}
}
使用locationInNode
代替locationInView
let location = touch.locationInNode(self)
UIView坐标原点和SKScene坐标原点不同UIView
原点(0,0)在左上角。 SKScene
的原点在左下方。所以函数 locationInNode
和 locationInView
将 return 不同的结果。
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if(button.containsPoint(location)) {
}
}
}
我正在尝试创建一个切换场景的按钮。我知道切换场景的代码,但我用来通过按钮执行此操作的代码不起作用。
更新:我的代码在第一个场景中工作,但是当我在另一个场景中使用相同的代码时(我切换了按钮和场景)它不起作用。 有人知道为什么吗?
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let gamestartScene = GameStartScene(size: self.frame.size)
var location = CGPoint(x: 0, y: 0)
var touch = touches.anyObject() as UITouch
location = touch.locationInView(self.view)
if menuButton.containsPoint(location){
self.removeChildrenInArray([menuButton,replayButton,highScoreLabel,scoreLabela])
self.view?.presentScene(gamestartScene)
score = 0
}
}
使用locationInNode
代替locationInView
let location = touch.locationInNode(self)
UIView坐标原点和SKScene坐标原点不同UIView
原点(0,0)在左上角。 SKScene
的原点在左下方。所以函数 locationInNode
和 locationInView
将 return 不同的结果。
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if(button.containsPoint(location)) {
}
}
}