我在我的钢琴应用程序中有一个奇怪的错误。有时键(以及音符)挂起。我做了很多的调试和范围缩小到什么样子的运动事件处理机器人误差:
DEBUG/(2091): ACTION_DOWN A4
DEBUG/(2091): KeyDown: A4
DEBUG/(2091): ACTION_MOVE A4 => A4
DEBUG/(2091): ACTION_MOVE ignoring
DEBUG/(2091): ACTION_MOVE A4 => A4
DEBUG/(2091): ACTION_MOVE ignoring
DEBUG/(2091): ACTION_MOVE A4 => A4
DEBUG/(2091): ACTION_MOVE ignoring
DEBUG/(2091): ACTION_UP B4 //HOW CAN THIS BE????
DEBUG/(2091): KeyUp: B4
DEBUG/(2091): Stream is null, can't stop
DEBUG/(2091): Hanging Note: A4 X=240-287 EventX=292 Y=117-200 EventY=164
DEBUG/(2091): KeyUp Note: B4 X=288-335 EventX=292 Y=117-200 EventY=164
显然,在这里可以看到,无处我突然有另外一个需要注意的ACTION_UP
。我不应该首先获得ACTION_MOVE
吗?
如日志末尾所示,由于ACTION_UP
事件明显位于B4区域,因此在区域检测中绝对不是错误。
日志实现细节
每onTouchEvent()
通话记录,所以日志是准确的。
为ACTION_MOVE记录相关的伪代码:
Key oldKey = Key.get(event.getHistoricalX(), event.getHistoricalY());
Key newKey = Key.get(event.getX(), event.getY());
问题
是Android(在坐标跳跃)这个正常的行为?
Can a ACTION_UP
just just occurred before any ACTION_MOVE
towards it's coordinates?
这是什么设备,你跟踪多个手指?这些日志输出的细目是什么? EventX在这两行中都是292,如果我正确阅读,不应该把B4范围中的“挂起注释”和“KeyUp注释”坐标都放在一起? – adamp 2010-06-06 22:38:40
我没有丝毫,但也好奇。它可以在模拟器和/或其他设备中正常工作吗? – Gerard 2012-04-22 22:51:46
@adamp。回顾一下后,实际上日志输出看起来有点可疑,因为它显示相同的坐标和不同的音符。但是,我已经开始使用指针ID来记录当前按下的按键,并在指针被抬起时释放正确的按键。 – Peterdk 2012-04-22 23:06:08