【问题标题】:Multitouch does not work Android多点触控不适用于 Android
【发布时间】:2012-11-20 13:01:00
【问题描述】:

我的触摸监听器出现问题,实际上无法正常工作。

    @Override
public boolean onTouchEvent(MotionEvent event) {

    touchControll.processTouchEvent(event); //should do everything!
    invalidate();
    return true; 
}

Methode 的 processTouchevent 只是将事件监视放在它所在的位置并处理它。 因此,如果触摸在手柄内部,它会处理手柄“动作”。但是如果我现在想处理一个 hitButton 事件,它不会做出反应。

例子

    public void processHitButtonTouch(MotionEvent event){
    int touchPosX = (int) event.getX();
    int touchPosY = (int) event.getY();
    if(event.getAction() == MotionEvent.ACTION_DOWN)
        if(touchPosX > Config.BLOCKSIZE*37 && touchPosY > Config.BLOCKSIZE*3 && touchPosY < Config.BLOCKSIZE*7){
            this.hitButton.buttonStatus = Pressed.PRESSED;
        }
    }

在每个 MotionEvent.ACTION_UP 上,我都会像这样重置整个内容:

    if(event.getAction() == MotionEvent.ACTION_UP){
        joyPad.status = Status.IDLE;
        charac.setStatus(Status.IDLE);
        this.hitButton.buttonStatus = Pressed.UNPRESSED;
    }

如果它确实使用 Loggincat 处理了 1 个以上的事件并且它确实处理了(记录了 2 次触摸 2 次 downevent!),那么我并列。但它根本不像我在这里做的那样工作。 我做错了什么?!

非常感谢您的帮助!

【问题讨论】:

    标签: android event-handling touch


    【解决方案1】:

    在 Android 中,触摸事件仅被一个视图捕获,因此当您将手指放在 Joypad 上时,如果您的 hitButton 没有反应,这是正常的。

    要使用多点触控,您必须实现一个全局视图,其中包含所有按钮(手柄、点击按钮...)。所以这个视图会捕获事件并将其传递给手柄的 touchEventListener 或 hitButton 的监听器。

    编辑:这里是一个带有 2 个操纵杆的示例

    http://code.google.com/p/mobile-anarchy-widgets/source/browse/trunk/Widgets/src/com/MobileAnarchy/Android/Widgets/Joystick/DualJoystickView.java?r=30

    Edit2:一个很好的教程

    http://android-developers.blogspot.fr/2010/06/making-sense-of-multitouch.html

    【讨论】:

    • 我不是已经这样做了吗?我得到了我的表面视图,我在其中渲染我的游戏和按钮并将所有触摸事件传递给 Touchcontroller。
    • surfaceview不就是你说的全局视图吗? Handle 就是这些触摸。我只是不明白,我很抱歉。是否每个按钮都需要自己的 View 来处理触摸?
    • 不完全是,如果我记得 ACTION_UP/DOWN 是针对第一根手指的。要捕捉额外手指的动作,您应该使用指针和 ACTION_POINTER_UP & co。 stackoverflow.com/a/4269592/1720391
    • 所以如果我使用 ACTION_POINTER_UP/DOWN 如果我做对了,它应该可以在没有其他任何东西的情况下工作。
    • 感谢您的帮助,我希望通过该教程得到它。
    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多