touchesBegan Swift 2 个自定义 SKSpriteKit 节点

touchesBegan Swift 2 custom SKSpriteKit Nodes

我是制作游戏的新手,所以作为一种练习,我目前正在制作一款愚蠢的游戏。这个游戏有一个包含按钮(0-9)的公文包我想保存数组中按下的数字的值。如果按下特定类型,我不确定如何使用触摸开始执行特定操作。 按钮输入:

class ButtonInput: SKSpriteNode{

var value: Int = 0

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

}
}

loadView():

let briefcase = ButtonInput(imageNamed: "briefcase")
    let Button0 = ButtonInput(imageNamed: "Button0")
    let Button1 = ButtonInput(imageNamed: "Button1")
    let Button2 = ButtonInput(imageNamed: "Button2")
    let Button3 = ButtonInput(imageNamed: "Button3")
    let Button4 = ButtonInput(imageNamed: "Button4")
    let Button5 = ButtonInput(imageNamed: "Button5")
    let Button6 = ButtonInput(imageNamed: "Button6")
    let Button7 = ButtonInput(imageNamed: "Button7")
    let Button8 = ButtonInput(imageNamed: "Button8")
    let Button9 = ButtonInput(imageNamed: "Button9")


    Button0.value = 0
    Button1.value = 1
    Button2.value = 2
    Button3.value = 3
    Button4.value = 4
    Button5.value = 5
    Button6.value = 6
    Button7.value = 7
    Button8.value = 8
    Button9.value = 9

更新:

经过数小时的研究,我尝试着开始接触,我想到了这个:

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {


    for touch: AnyObject! in touches {
        let touchLocation = touch.locationInNode(self)
        let touchedNode = self.nodeAtPoint(touchLocation)
        let name = touchedNode.name

            if name == "Button0"
            {
                userSequence.append(Button0.value)
                print("Button0 pressed")
            }
            if name == "Button1"
            {
                userSequence.append(Button1.getValue())
                print("Button1 pressed")
            }
            if name == "Button2"
            {
                userSequence.append(Button2.value)
            }
            if name == "Button3"
            {
                userSequence.append(Button3.value)
            }
            if name == "Button4"
            {
                userSequence.append(Button4.value)
            }
            if name == "Button5"
            {
                userSequence.append(Button5.value)
            }
            if name == "Button6"
            {
                userSequence.append(Button6.value)
            }
            if name == "Button7"
            {
                userSequence.append(Button7.value)
            }
            if name == "Button8"
            {
                userSequence.append(Button8.value)
            }
            if name == "Button9"
            {
                userSequence.append(Button9.value)
            }
            if name == "ButtonEnter"
            {
                compareSequences()
            }
    }


}

你应该在主故事板中制作按钮,并将它们连接到视图控制器。然后你可以在连接的动作中为每个按钮编写函数

希望这对您有所帮助

如果你使用 SpriteKit,我会这样做:

import SpriteKit

var _button = [SKSpriteNode]()

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    for touch in touches {
        let location = touch.locationInNode(self)

        if(self.nodeAtPoint(location).name != nil && self.nodeAtPoint().name != "enter") {
            _array.append(self.nodeAtPoint(location).name)
        }
    }
}

func loadView() {

    for(var i = 0; i < 10; i++) {
        let tempButton = SKSpriteNode(imageNamed: "Button\(i)")
        tempButton.position = CGPoint(x: yourValue, y: yourValue)
        tempButton.size = CGSize(width: yourValue, height: yourValue)
        tempButton.name = "\(i)"
        temButton.zPosition = 2
        _button.append(tempButton)
        self.addChild(_button.last!)
    }

}

如果您在游戏中没有其他 SKSpriteNode,这将起作用,因为在触摸开始时我假设触摸的精灵有一个数字 (0-9)。为了解决这个问题,您可以添加一个 if 语句来验证名称是否在 0-9 之间。

希望对您有所帮助!