【问题标题】:Turn off simultaneous touches in SKScene / Sprite Kit在 SKScene / Sprite Kit 中关闭同时触摸
【发布时间】:2015-02-27 18:36:54
【问题描述】:
我目前正在开发一款用户一次只能用一根手指触摸的游戏。我正在使用SKScene 并尝试寻找禁用多点触控功能的方法,但没有任何结果。我想在调用touchesBegan() 和touchesEnded() 之间的所有触摸时手动调用“return”,但该方法也有缺陷(SpriteKit SKScene missing touchesEnded)。
所以我的问题是:如何在 SKScene 中一次只允许一次触摸?
【问题讨论】:
标签:
ios
sprite-kit
multi-touch
skscene
【解决方案1】:
SKView 继承自 UIView,所以,在 didMoveToView 中添加:
self.view.multipleTouchEnabled = NO;
【解决方案2】:
具有讽刺意味的是,经过几天一无所获,我在发布此问题后立即想出了一个 hack。但请注意,这是一个 hack,而且不是最优的,所以我仍在寻找更好的建议。破解如下:
在touchesBegan()里面,替换:
for touch: AnyObject in touches {
// Whatever is being done on touch
}
与:
for touch: AnyObject in touches {
if(CACurrentMediaTime()-lastTouchDate < 0.1) {
return;
}
lastTouchDate = CACurrentMediaTime();
// Whatever is being done on touch
}
这样,只有第一次触摸会被注册,当多个触摸同时进入时,或者紧接着一个。 if(CACurrentMediaTime()-lastTouchDate