我在 AndEngine
中使用此方法来检测用户何时点击屏幕,
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
if(pSceneTouchEvent.isActionDown()) {
if(pSceneTouchEvent.isActionDown()) { //Jump only if the user tapped, not moved his finger or something
taps++;
if(taps == 1){
if(isJumping == false){
final float jumpDuration = 2;
final float startX = player.getY();
final float jumpHeight = 100;
final MoveYModifier moveUpModifier = new MoveYModifier(.1f, startX, startX - jumpHeight);
final MoveYModifier moveDownModifier = new MoveYModifier(.1f, startX - jumpHeight, startX);
final SequenceEntityModifier modifier = new SequenceEntityModifier(moveUpModifier, moveDownModifier);
player.registerEntityModifier(modifier);
isJumping = true;
hipp_jump.play();
return true;
}
}
}
}
return false;
}
Sooo 我遇到的问题是,如果用户双击屏幕,那么 Sprite 会跳两次,这会将他移出他应该返回的位置。因为当它跳跃两次时,Y 会发生变化。
如何允许 Sprite 在每次点击时只移动一次,即使用户点击多次?
最佳答案
手动解决方案是设置一个延迟(记录点击的时间戳),并忽略某个时间增量内的点击。我建议使用高分辨率 java.lang.System.nanoTime()
特别是电容式触摸屏很容易产生多次轻击,甚至是无意的。它在 Android 中没有得到处理,并且已被证明对我们的应用程序来说是一个严重的问题...
更新:伪代码示例
private long lastTap=0;
onTap() {
long now = System.nanoTime();
if (now-lastTap < threshold) return;
else lastTap = now;
...
}
关于java - 如何对用户多次点击使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8844519/