SKNode containsPoint不起作用

时间:2015-01-23 00:34:35

标签: ios swift compiler-errors sprite-kit

我正在尝试创建一个切换场景的按钮。我知道切换场景的代码,但是我用来按钮的代码不起作用。

更新:我有代码在第一个场景上工作,但是当我在另一个场景上使用相同的代码(我切换按钮和场景)时,它不起作用。 有谁知道为什么?

    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
    }
}

1 个答案:

答案 0 :(得分:1)

使用locationInNode代替locationInView

let location = touch.locationInNode(self)

UIView坐标的原点和SKScene坐标不同。 UIView的原点(0,0)位于左上角。 SKScene的来源位于左下角。因此,locationInNodelocationInView函数会返回不同的结果。

override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
    for touch: AnyObject in touches {
        let location = touch.locationInNode(self)

        if(button.containsPoint(location)) {

        }
    }    
}