让计算器应用程序工作后我决定尝试创建pong。中间有一个盒子,两端有两个拨片。手机是水平的。我把盒子从墙上弹开,桨叶随着我的手指向下移动。我的问题是我想让它成为两个玩家,我希望有多个手指输入游戏。我想要一个手指移动桨1,另一个手指移动桨2.到目前为止,这是我的输入代码
@Override
public boolean onTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_MOVE: {
// Find the index of the active pointer and fetch its position
float p1y = ev.getY();
if(ev.getX()<300)
{
player1y = p1y;
}
if(ev.getX()>300)
{
player2y = p1y;
}
//player1y = p1y;
invalidate();
break;
}
}
return true;
}
它位于我的surfaceview类中。如何修改输入法或完全摆脱它并更改它以实现我的目标?对我的变量也很抱歉。 Eclipse在我身上崩溃很多,而我的笔记本电脑触摸面板往往会移动我的光标,因此较短的变量似乎可行。 p1y是触摸的y。而player1y和player2y是player1和player2球拍的y位置。
答案 0 :(得分:2)
MotionEvent可以包含多个指针。使用getPointerCount()
查看当前事件中有多少指针正在触摸屏幕。 getX
和getY
的备用版本采用0 - getPointerCount() - 1
的索引。
在一个更复杂的应用程序中,您可能希望通过指针ID跟踪手指,但是对于您在屏幕上使用截止点这么简单的事情,您可以在ACTION_MOVE
情况下执行以下操作:
int pointerCount = ev.getPointerCount();
for (int i = 0; i < pointerCount; i++) {
float x = ev.getX(i);
float y = ev.getY(i);
if (x < 300) {
player1y = y;
} else if (x > 300) {
player2y = y;
}
}
如果您想了解更多信息,Android开发者博客中的这篇文章可能有所帮助:http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html