让最后一根手指触摸屏幕

D4rWiNS

我需要进行控制,并且多点触控存在问题。

这个概念很简单:

  • 如果用户触摸左侧(屏幕的一半),则船舶将向左侧移动
  • 如果用户触摸右侧(屏幕的一半),则船只将向右侧行驶。

用户执行以下操作时会出现问题:

  • 将手指放在左侧
  • 在不移开左手指的情况下,将手指放在右侧
  • 移开左手指
  • 再次放左手指(我的代码无法识别它,有问题)

我想要一个仅能获得屏幕上最后一根手指的'X'位置的代码

我的实际代码:

    @Override
public boolean onTouchEvent(MotionEvent event)
{
    int index = MotionEventCompat.getPointerCount(event) - 1;

    float x = (int) MotionEventCompat.getX(event, index);       
    @SuppressWarnings("deprecation")
    int ancho = AEngine.display.getWidth();

    switch (MotionEventCompat.getActionMasked(event))
    {
        case MotionEvent.ACTION_DOWN:
            if (gameView != null)
                gameView.touchNave(x, ancho);
            break;
        case MotionEvent.ACTION_POINTER_DOWN:
            if (gameView != null)
                gameView.touchNave(x, ancho);
            break;
        case MotionEvent.ACTION_MOVE:
            if (gameView != null)
                gameView.touchNave(x, ancho);
            break;

        case MotionEvent.ACTION_UP:
            Nave.estado = AEngine.NAVE_STAY;
            break;
        case MotionEvent.ACTION_POINTER_UP:
            Nave.estado = AEngine.NAVE_STAY;
            break;
    }


    return false;
}
D4rWiNS

我通过使用LinkedHashMap并使用它的最后一项代码来实现的:

LinkedHashMap<Integer, Float> al = new LinkedHashMap<Integer, Float>();
@Override
public boolean onTouchEvent(MotionEvent event)
{
    int index = MotionEventCompat.getActionIndex(event);
    int id = event.getPointerId(index);

    float x = (int) MotionEventCompat.getX(event, index);


    @SuppressWarnings("deprecation")
    int ancho = AEngine.display.getWidth();

    switch (MotionEventCompat.getActionMasked(event))
    {
        case MotionEvent.ACTION_DOWN:
            anadir(id,x);               
            break;
        case MotionEvent.ACTION_POINTER_DOWN:
            anadir(id,x);
            break;

        case MotionEvent.ACTION_UP:
            al.remove(id);
            break;
        case MotionEvent.ACTION_POINTER_UP:         
            al.remove(id);
            break;
    }

    if(al.size() > 0)
    {
        if (gameView != null)
            gameView.touchNave(getX(al), ancho);
    }
    else 
    {
        Nave.estado = AEngine.NAVE_STAY;
    }

    return false;
}
public float getX(LinkedHashMap<Integer,Float> map) {
    Iterator<Map.Entry<Integer,Float>> iterator = map.entrySet().iterator();
    float x = 0;
    while (iterator.hasNext()) {
        x = iterator.next().getValue();
    }
    return x;
}

public void anadir(int id,float x)
{
    if (al.size() > 0 || !al.containsKey(id))
    {
        al.put(id, x);  
        Log.e("WTF",Integer.toString(id)+ "añadido");
    } 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

XServer触摸屏,一根手指而不是两根手指滚动

来自分类Dev

如何在WinRT中用一根手指触摸获得总旋转角度?

来自分类Dev

IE11触摸设备上的一根手指滚动与两根手指滚动之间的区别

来自分类Dev

用一根手指旋转椭圆(WPF)

来自分类Dev

为UITableView强制两根手指滚动,但禁用一根手指滚动

来自分类Dev

强制两根手指滚动进行UITableView,但禁用一根手指滚动

来自分类Dev

仅用一根手指而不是两只手指来调整ImageView的大小

来自分类Dev

手指触摸屏幕时执行SurfaceView执行方法

来自分类Dev

Libgdx - 关于 2 人游戏。我希望每个玩家都可以用一根手指触摸自己的区域

来自分类Dev

一根手指在MacBook触摸板上滚动

来自分类Dev

如何只用一根手指就能在Google Maps API(android)上旋转?

来自分类Dev

如何防止uwp中的一根手指滚动进行listview控件?

来自分类Dev

用两个手指触摸屏?

来自分类Dev

如何通过手指触摸屏幕来擦除Windows Phone中图像的特殊像素

来自分类Dev

如何在进行ACTION_MOVE时用另一根手指检测TOUCH事件

来自分类Dev

iOS 13 blob pdf 文件的滚动问题(不能用一根手指滚动)

来自分类Dev

触摸板-两根手指滚动

来自分类Dev

手指稍微移动一下,点击事件就不会在触摸屏上触发

来自分类Dev

手指跟踪与屏幕IOS上的触摸不匹配

来自分类Dev

长时间使用触摸屏时,如何防止手指摩擦?

来自分类Dev

如何在不产生触摸事件的情况下将手指从触摸屏上抬起?

来自分类Dev

触摸从 2 个手指开始

来自分类Dev

如何在C#WPF中在触摸屏上识别输入指针是鼠标还是手指?

来自分类Dev

手指触摸而不是第一人称角色

来自分类Dev

Javascript触摸事件:区分手指与Apple Pencil

来自分类Dev

手指触摸/拖动时更改UIButton的大小

来自分类Dev

iOS:是否可以检测到非手指触摸?

来自分类Dev

关于在Swift中触摸屏幕一次即可识别手势的问题

来自分类Dev

在iPad上禁用两根手指滚动

Related 相关文章

  1. 1

    XServer触摸屏,一根手指而不是两根手指滚动

  2. 2

    如何在WinRT中用一根手指触摸获得总旋转角度?

  3. 3

    IE11触摸设备上的一根手指滚动与两根手指滚动之间的区别

  4. 4

    用一根手指旋转椭圆(WPF)

  5. 5

    为UITableView强制两根手指滚动,但禁用一根手指滚动

  6. 6

    强制两根手指滚动进行UITableView,但禁用一根手指滚动

  7. 7

    仅用一根手指而不是两只手指来调整ImageView的大小

  8. 8

    手指触摸屏幕时执行SurfaceView执行方法

  9. 9

    Libgdx - 关于 2 人游戏。我希望每个玩家都可以用一根手指触摸自己的区域

  10. 10

    一根手指在MacBook触摸板上滚动

  11. 11

    如何只用一根手指就能在Google Maps API(android)上旋转?

  12. 12

    如何防止uwp中的一根手指滚动进行listview控件?

  13. 13

    用两个手指触摸屏?

  14. 14

    如何通过手指触摸屏幕来擦除Windows Phone中图像的特殊像素

  15. 15

    如何在进行ACTION_MOVE时用另一根手指检测TOUCH事件

  16. 16

    iOS 13 blob pdf 文件的滚动问题(不能用一根手指滚动)

  17. 17

    触摸板-两根手指滚动

  18. 18

    手指稍微移动一下,点击事件就不会在触摸屏上触发

  19. 19

    手指跟踪与屏幕IOS上的触摸不匹配

  20. 20

    长时间使用触摸屏时,如何防止手指摩擦?

  21. 21

    如何在不产生触摸事件的情况下将手指从触摸屏上抬起?

  22. 22

    触摸从 2 个手指开始

  23. 23

    如何在C#WPF中在触摸屏上识别输入指针是鼠标还是手指?

  24. 24

    手指触摸而不是第一人称角色

  25. 25

    Javascript触摸事件:区分手指与Apple Pencil

  26. 26

    手指触摸/拖动时更改UIButton的大小

  27. 27

    iOS:是否可以检测到非手指触摸?

  28. 28

    关于在Swift中触摸屏幕一次即可识别手势的问题

  29. 29

    在iPad上禁用两根手指滚动

热门标签

归档