0

我正在尝试制作一个SKLabelNode. 当它被按下时,它应该改变场景,但是声明位置的行有问题。

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    super.touchesBegan(touches, withEvent: event)

    let location = touches.locationInNode(self)
    let touchedNode = self.nodeAtPoint(location)

    if touchedNode.name == "startGameButton" {
        let transition = SKTransition.revealWithDirection(SKTransitionDirection.Down, duration: 1.0)

        let scene = GameScene(size: self.scene.size)
        scene.scaleMode = SKSceneScaleMode.AspectFill

        self.scene.view.presentScene(scene, transition: transition)
    }
}

错误就在这里。

let location = touches.locationInNode(self)

它读到

'Set< NSObject>' 没有名为 'locationInNode' 的成员

我不知道如何解决它。我查看了很多工作按钮模板,但我的总是有错误。

4

2 回答 2

1

问题正是错误状态 -Set<NSObject>没有名为locationInNode. 您需要做的是从 ; 中检索一个对象Set。检查它是一个UITouch对象;如果是,您可以使用它来获取触摸位置。尝试:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    if let location = (touches.first as? UITouch)?.locationInNode(self) {
        // ...
    }
}

或者

if let touch = touches.first as? UITouch {
    let location = touch.locationInNode(self)
    // ...
}
于 2015-05-30T18:36:05.953 回答
0

要修复它,这是默认修复,它只是枚举所有的触摸。

for touch: AnyObject in touches {
        let location = touch.locationInNode(self)
        node = self.nodeAtPoint(location)
        //do something
}
于 2015-05-31T06:58:41.257 回答