我在屏幕上显示了一个二维数组并决定实现一种方法,它会检测触摸位置并找到触摸所在的图块并将其删除,更确切地说,更改地图上的int [x ] [Y]。 我目前有一个2d的地图数组,满15秒15。 触摸一个位置,我创建的这个方法,因为我找不到一种方法来舍入数字,会计算数组中的位置并更改值:
public boolean onTouchEvent(MotionEvent event) {
mX = (int) event.getX();
mY = (int) event.getY();
calculate();
return true;
}
public void calculate() {
indexX = 0;
indexY = 0;
for (int n = 32; n < mX; n += 32) {
indexX++;
}
for (int n = 32; n < mY; n += 32) {
indexY++;
}
map[indexY][indexX] = 1;
}
如果我开始捣碎屏幕或拖动我的手指,它会强制关闭,但如果我慢慢地逐个触摸一个位置它就可以正常工作。 我假设计算方法不应该在触摸事件方法中,但仍然不太确定。
答案 0 :(得分:0)
没有必要这个for循环。除以两个整数应该给出整数结果。由于你想要除以2的幂,你也可以使用算术移位算子。 (有人可能会认为编译器会选择哪个更快,无论你编码什么,但负值的舍入行为是不同的)
indexX = mX&gt;&gt; 5;
如果你只做两次操作,速度应该不是问题。
“强制关闭”是指应用程序没有响应对话框吗?
如果是其他内容,则可能存在边界问题。