取消点击手势识别器

时间:2016-01-19 04:05:47

标签: ios swift sprite-kit uitapgesturerecognizer

参考我的上一个问题:

Sprite moves two places after being paused and then unpaused

嗨,我有一个轻击手势,将我的游戏中的精灵向前移动1个空格,当我按下暂停按钮时,它继续注册轻击手势,然后当我恢复游戏时它会移动两个空格。

所以我设法定义一个bool变量来检测(使用if语句)我是否暂停了点击手势

var tapIsPaused: Bool = false



func tapUp(){

    if(tapIsPaused == true) {

        //do nothing


    } else if (tapIsPaused == false) {

        let amountToMove:CGFloat = levelUnitHeight

        let move:SKAction = SKAction.moveByX(0, y: amountToMove, duration: 0.1)


        menubutton.hidden = true
        settingsButton.hidden = true
        highscoreLabel.hidden = true
        pauseButton.hidden = false

        thePlayer.runAction(move)

        clearNodes()

    }

}

但我现在遇到的问题是,当我按下继续按钮恢复游戏时它仍会移动精灵,但这次它只移动一个空格,这是因为当我按下恢复按钮时它会打开水龙头,然后注册恢复按钮的水龙头以移动播放器。

我该如何解决这个问题?

这是我的暂停按钮:

 else if (node == pauseButton) {

        tapIsPaused = true
        pauseButton.removeFromParent()
        addChild(resumeButton)
        addChild(restartButton)
        self.runAction (SKAction.runBlock(self.pauseGame))

    }

这是我的简历按钮:

 else if (node == resumeButton) {


        resumeButton.removeFromParent()
        restartButton.removeFromParent()
        addChild(pauseButton)
        self.runAction (SKAction.runBlock(self.resumeGame))
        tapIsPaused = false

    }

这是我的点击手势处理程序代码:

 let TapUpRec = UITapGestureRecognizer()




 TapUpRec.addTarget(self, action: "tapUp")
    self.view!.addGestureRecognizer(TapUpRec)

3 个答案:

答案 0 :(得分:1)

将恢复功能修改为:

 else if (node == resumeButton) {

    resumeButton.removeFromParent()
    restartButton.removeFromParent()
    addChild(pauseButton)
    tapIsPaused = false
    self.runAction (SKAction.runBlock(self.resumeGame))
}

答案 1 :(得分:1)

您可以在暂停时删除手势,然后点击以下内容:

docker run -d -p 80:80 --name "app" localhost:5000/test/nginx-image:1

docker run -d -p 8888:8888 --name "app-" localhost:5000/test/nodejs-image:1

如果恢复游戏

再添加一次

答案 2 :(得分:0)

非常简单和最简单的方法。无需添加或删除手势。

您可以通过启用或停用手势来执行此操作。

对于swift 2.3

TapUpRec.enabled = false //pause click

TapUpRec.enabled = true //resume click

适用于swift 3.0

TapUpRec.isEnabled = false //pause click

TapUpRec.isEnabled = true //resume click