gpt4 book ai didi

Android,特殊的 TouchEvent 场景来处理

转载 作者:行者123 更新时间:2023-11-29 18:20:14 26 4
gpt4 key购买 nike

好的,所以在业余时间创建游戏时,我在尝试围绕以下场景编写代码时完全陷入困境:

我想捕获点击事件 (TouchEvent.ACTION_DOWN),然后以 500 毫秒为间隔,我想检查屏幕是否仍被按下,并无限重复相同的 Action 。

所以,我开始:

switch (myTouchHandler.getAction()) {
case (TouchEvent.ACTION_DOWN):
case (TouchEvent.ACTION_MOVE):
if (inputIntervalTooSoon()) return true;
//do the magic i intend to do....
}

....

private boolean inputIntervalTooSoon() {
final long now = System.currentTimeMillis();
if ((now - lastTouchEventTime) < 500) return false;
lastTouchEventTime = now;
return true;

这会产生它会等待 500 毫秒的效果,但它不会立即开始检测我的手指是否仍处于按下状态。如果我轻轻移动手指,它会再次拾起它,然后回到休眠状态。

如果我不包含 Interval 函数,我的操作就会不断触发。对于如何更好地实现这一点的任何想法,我们将不胜感激。

最佳答案

我可以想象一个在 TouchEvent.ACTION_DOWN 上启动的计时线程,它将在一个休眠 500 毫秒的循环中启动和运行。休眠之后,它将能够执行检查,这将执行您的自定义处理以及检查 TouchEvent.ACTION_UP 是否发生(您必须在 EventHandler 中记录)。

当然需要一些同步。

这有意义吗?

大致是这样的:

boolean upHappened;

switch (myTouchHandler.getAction()) {
case (TouchEvent.ACTION_DOWN):
upHappened = false;
new Thread(new TimerRunnable()).start();
case (TouchEvent.ACTION_UP):
case (TouchEvent.ACTION_CANCEL):
upHappened = true;
}

class TimerRunnable implements Runnable {
public void run() {
while(true) {
Thread.sleep(500);
if(upHappened) break;
//custom processing
}
}
}

关于Android,特殊的 TouchEvent 场景来处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5944154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com