在Swift中触摸SKSpriteNode时无法激活代码

时间:2016-03-26 03:21:36

标签: ios swift sprite-kit skspritenode sknode

当我按下一个精灵时,我正试图让事情发生,但是我在尝试正确识别触摸时遇到了问题。

class GameScene: SKScene {

var optDiceSprite = SKSpriteNode()

override func didMoveToView(view: SKView) {
    createOptSprite()
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    for touch in touches {
        let location = touch.locationInNode(self)
        let node = nodeAtPoint(location)

        print("NAME OF NODE: \(node.name)")

        if (node == optDiceSprite) {
            print("WHY U NO WORKY!")
        }
    }
}

func createOptSprite() {
        optDiceSprite = SKSpriteNode(imageNamed: "sound_off")
        optDiceSprite.userInteractionEnabled = true
        optDiceSprite.position = CGPoint(x: CGRectGetMaxX(self.frame) - 30, y: CGRectGetMinY(self.frame) + 30)
        optDiceSprite.setScale(0.5)
        addChild(optDiceSprite)
}

它没有开始打印声明。我在全局中声明了sprite,在touchesBegan方法中运行此代码之前创建并定位它。

我想要做的是每次用户切换触摸声音图标精灵时,它都会打开和关闭声音效果。

感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

试试这个

   class GameScene: SKScene {

        var optDiceSprite = SKSpriteNode()

        override func didMoveToView(view: SKView) {
        createOptSprite()
   }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        for touch in touches {
           let location = touch.locationInNode(self)
           let node = nodeAtPoint(location)

           print("NAME OF NODE: \(node.name)")

           if (node == optDiceSprite) {
                print("WHY U NO WORKY!")
              }
          }
     }

  func createOptSprite() {
    optDiceSprite = SKSpriteNode(imageNamed: "sound_off")
    optDiceSprite.setScale(0.5)
    optDiceSprite.position = CGPoint(x: CGRectGetMaxX(self.frame) - 30, y: CGRectGetMinY(self.frame) + 30)
    addChild(optDiceSprite)
  }