如何检测使用的手指数量?

3

我正在使用Libgdx制作游戏,需要知道用户是否使用了两个手指,并且它们是否放置在正确的位置。一个手指应该在屏幕的右侧,另一个手指应该在屏幕的左侧。

3个回答

5

最简单的解决方法不需要使用任何监听器,只需迭代一些指针并调用简单的Gdx.input.isTouched()即可 - 您必须设置一些“最大指针计数”,但是嘿-人们通常只有20根手指 :)

    final int MAX_NUMBER_OF_POINTERS = 20;
    int pointers = 0;

    for(int i = 0; i < MAX_NUMBER_OF_POINTERS; i++)
    {  
        if( Gdx.input.isTouched(i) ) pointers++;
    }

    System.out.println( pointers );

由于参考:

判断给定索引的指针是否当前触摸屏幕。指针从0到n进行编号。指针id标识手指按下屏幕的顺序,例如0是第一个手指,1是第二个手指,以此类推。当两个手指按下并且第一个手指抬起时,第二个手指保持其索引。如果在触摸屏幕上放置另一个手指,则使用第一个可用索引。

您还可以通过使用 Gdx.input.getX()Gdx.input.getY() 轻松获取触摸指针的位置,如下所示:

    final int MAX_NUMBER_OF_POINTERS = 20;
    int pointers = 0;

    for(int i = 0; i < MAX_NUMBER_OF_POINTERS; i++)
    {  
        if( Gdx.input.isTouched(i) )
        {
            x = Gdx.input.getX(i);
            y = Gdx.input.getY(i)
        }
    }

然后,您可以将其放入数组中。


嗯 - 查看我在答案中附加的方法引用(橙色文本块)。 - m.antkowicz
如果我想要实现InputListerner,touchdown()方法有一个指针参数,我该如何使用该指针变量来选择使用哪个指针/手指? - Kevin Bryan

1

GestureListenerInputProcessor都有touchDown方法。该方法包含屏幕上每个手指(指针)的x和y值。实现其中任意一个并覆盖touchdown方法以满足您的需求。这篇是一个很好的入门教程。希望能对您有所帮助。


1
如何检测使用的手指数量?
您可以使用 MotionEventgetPointerCount() 来实现。
您可以通过以下方法检测屏幕上有多少个手指:
int PointerCount = event.getPointerCount();

我需要知道用户是否使用了两根手指,并且它们是否放置在正确的位置

您可以获取X,Y并进行比较。

@Override
public boolean onTouch(View v, MotionEvent event) {
   int x = event.getX();
   int y = event.getY();
   return true;
}

如果您需要更多信息,可以查看MotionEvent文档,这样您就可以找到想要的内容。


x和y将获取手指的坐标,那第二个手指呢?这些手指应该同时出现在屏幕上。我的意思是,如果它们同时触摸屏幕,我该如何获取两个手指的坐标? - Kevin Bryan
另外,我正在使用libgdx,无法使用MotionEvent类。 - Kevin Bryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接