取消点击手势识别器
cancelling a tap gesture recongiser
关于我的最后一个问题:
你好,我有一个轻击手势,可以让我的游戏中的精灵向前移动 1 space,当我按下暂停按钮时,它会继续注册轻击手势,然后当我恢复游戏时,它会移动两个space秒。
所以我设法定义了一个 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()
}
}
但我现在遇到的问题是,当我按下恢复按钮继续游戏时,它仍然移动精灵,但这次它只移动了一个 space,这是因为当我按下恢复按钮它打开水龙头,然后注册恢复按钮的水龙头以向上移动播放器。
我该如何解决这个问题?
这是我的暂停按钮:
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)
将您的简历功能修改为:
else if (node == resumeButton) {
resumeButton.removeFromParent()
restartButton.removeFromParent()
addChild(pauseButton)
tapIsPaused = false
self.runAction (SKAction.runBlock(self.resumeGame))
}
您可以使用以下方法删除暂停点击时的手势:
self.view.removeGestureRecognizer(YOUR_GESTURE_RECOGNISER)
如果恢复游戏再添加
非常简单易行way.No需要添加或删除手势。
您可以通过启用或禁用手势来实现。
为swift2.3
TapUpRec.enabled = false //pause click
TapUpRec.enabled = true //resume click
为swift3.0
TapUpRec.isEnabled = false //pause click
TapUpRec.isEnabled = true //resume click
关于我的最后一个问题:
你好,我有一个轻击手势,可以让我的游戏中的精灵向前移动 1 space,当我按下暂停按钮时,它会继续注册轻击手势,然后当我恢复游戏时,它会移动两个space秒。
所以我设法定义了一个 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()
}
}
但我现在遇到的问题是,当我按下恢复按钮继续游戏时,它仍然移动精灵,但这次它只移动了一个 space,这是因为当我按下恢复按钮它打开水龙头,然后注册恢复按钮的水龙头以向上移动播放器。
我该如何解决这个问题?
这是我的暂停按钮:
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)
将您的简历功能修改为:
else if (node == resumeButton) {
resumeButton.removeFromParent()
restartButton.removeFromParent()
addChild(pauseButton)
tapIsPaused = false
self.runAction (SKAction.runBlock(self.resumeGame))
}
您可以使用以下方法删除暂停点击时的手势:
self.view.removeGestureRecognizer(YOUR_GESTURE_RECOGNISER)
如果恢复游戏再添加
非常简单易行way.No需要添加或删除手势。
您可以通过启用或禁用手势来实现。
为swift2.3
TapUpRec.enabled = false //pause click
TapUpRec.enabled = true //resume click
为swift3.0
TapUpRec.isEnabled = false //pause click
TapUpRec.isEnabled = true //resume click