gpt4 book ai didi

android - 如何为 ACTION_MOVE 获得更快的触摸频率

转载 作者:行者123 更新时间:2023-11-29 02:09:03 24 4
gpt4 key购买 nike

我正在编写一个游戏,当我触摸屏幕时,一个球会跟随我的移动。我的触摸代码类似于:

...
case MotionEvent.ACTION_MOVE:
ballX = currentX;
ballY = currentY;
invalidate();

我自然会处理 OnDraw 事件并使用 drawOval 绘制椭圆。

当应用程序在模拟器中启动时,一切都按照指示工作,但似乎通过增加触摸(鼠标)的速度,球以非常高的延迟移动,所以当我停止移动时,我应该等待 1秒,而球到达最后一个位置。有没有办法增加 ACTION_MOVE 事件的频率以更快地触发或改善此程序的整体行为?

最佳答案

您所描述的情况通常表明您接收ACTION_MOVE事件的速度比您处理它们的速度。这会导致事件在您抬起手指后排队并处理。您的问题的根源很可能是对 invalidate() 的调用花费了大量时间。

您的问题的可能解决方案是每 N 个事件处理一次 ACTION_MOVE 事件:

int moveEvtCnt = 0;  
int N = 5; // Handle every 5 movement events
..
case MotionEvent.ACTION_MOVE:
if((moveEvtCnt % N) == 0) {
ballX = currentX;
ballY = currentY;
invalidate();
}
moveEvtCnt++;

在上面的示例中,您将每 5 个样本处理一次 ACTION_MOVE 事件。由于 invalidate() 的调用频率较低,因此它可以更好地实时跟踪手指的运动,而不是将处理时间浪费在过去的、无关紧要的事件上。

关于android - 如何为 ACTION_MOVE 获得更快的触摸频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8520721/

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