【发布时间】:2016-09-12 13:31:33
【问题描述】:
下面,我已经实现了测试来了解可触摸精灵的触摸计数行为 (sprite.isUserInteractionEnabled = true)
入住时:
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch: AnyObject in touches {
print("touched sprite = name:'WalkBoyTouchSprite'", "tapCount=", touch.tapCount, NSDate())
}
}
以下是我的一些触摸结果:
当我经常触摸时,它只会不断增加触摸次数:
touched sprite = name:'WalkBoyTouchSprite' tapCount= 1 2016-09-12 13:11:50 +0000
performSingleTapActions
触摸精灵 = 名称:'WalkBoyTouchSprite' tapCount= 2 2016-09-12 13:11:51 +0000
performDoubleTapActions
触摸精灵 = 名称:'WalkBoyTouchSprite' tapCount= 3 2016-09-12 13:11:51 +0000
performTriippleTapActions
触摸精灵 = 名称:'WalkBoyTouchSprite' tapCount= 4 2016-09-12 13:11:51 +0000
触摸精灵 = 名称:'WalkBoyTouchSprite' tapCount= 5 2016-09-12 13:11:51 +0000
触摸精灵 = 名称:'WalkBoyTouchSprite' tapCount= 6 2016-09-12 13:11:52 +0000
触摸精灵 = 名称:'WalkBoyTouchSprite' tapCount= 7 2016-09-12 13:11:52 +0000
然后,一旦我暂停了一段时间,它就会从 1 开始计数,再次检查休息时间。
touched sprite = name:'WalkBoyTouchSprite' tapCount= 1 2016-09-12 13:11:53 +0000
执行SingleTapActions
touched sprite = name:'WalkBoyTouchSprite' tapCount= 1 2016-09-12 13:12:16 +0000
performSingleTapActions
触摸精灵 = 名称:'WalkBoyTouchSprite' tapCount= 2 2016-09-12 13:12:17 +0000
performDoubleTapActions
触摸精灵 = 名称:'WalkBoyTouchSprite' tapCount= 3 2016-09-12 13:12:17 +0000
执行TriippleTapActions
touched sprite = name:'WalkBoyTouchSprite' tapCount= 1 2016-09-12 13:12:18 +0000
performSingleTapActions
触摸精灵 = 名称:'WalkBoyTouchSprite' tapCount= 1 2016-09-12 13:12:20 +0000
执行SingleTapActions
touched sprite = name:'WalkBoyTouchSprite' tapCount= 1 2016-09-12 13:12:21 +0000
performSingleTapActions
触摸精灵 = 名称:'WalkBoyTouchSprite' tapCount= 2 2016-09-12 13:12:21 +0000
执行DoubleTapActions
一旦点击 1 次,我需要执行一项操作,如果点击 2 次,则执行另一项操作(如您在测试日志中看到的那样)。但问题是它按顺序调用。这意味着如果我在各自的触摸计数上应用 Action1、Action2 和 Action3,所有 3 都将被激活。
什么是区分单点触控和多点触控的聪明方法?就像我能得到确切的所需暂停时间(之后它从 1 开始计数),或者其他更好的东西。
【问题讨论】:
-
只在 switch 语句中使用点击计数
-
仍然会调用 case 1 然后 2 然后 3。
-
哦,我明白了,如果你双击,你希望第一个被忽略
-
是的,没错,在所有水龙头的情况下都是一样的。每个点击计数都需要作为不同的事件。即使计数不同也不要触摸。
-
然后点击计数不是你想要的,你可以切换到将所需的动作保存在一个块中,然后将一个点击手势附加到视图,当手势命令执行时,触发对应的块触摸
标签: ios swift cocos2d-iphone sprite-kit touch