为什么在不触摸屏幕的情况下触发了我的onTouchEvent?

光子

当我第一次触摸屏幕时,onTouchEvent方法总是说事件为0(MotionEvent.ACTION_DOWN)。当我停止触摸屏幕时,我不知道如何报告它。

阶段变量告诉它在三部分过程中(开始,停止和释放)它处于哪个抽头编号(用于像游戏这样的弹射器)

public static int stage = 0;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                stage++;
                System.out.println(stage);
                handleTouches();
                System.out.println(onTouchEvent(event));
                return onTouchEvent(event);
        }
        return true;
    }
    public void handleTouches() {
        if (stage == 1) {
            runPowerBar = true;

        } else if (stage == 2) {
            runPowerBar = false;
            tree.startAnimation();
            bg.startFlight(power);
        }
    }

    public void update() {
        tree.update();
        setCoins(context, 0);
        //setCoins(context, coins);

        if (runPowerBar) {
            powerBar.powerBarSlider();
        }
        System.out.println(runPowerBar);
    }

更新方法由MainThread中的以下方法调用

 @Override
    public void run() {
        while (running) {
            canvas = null;

            try {
                canvas = this.surfaceHolder.lockCanvas();
                synchronized(surfaceHolder) {
                    this.gameView.update();
                    this.gameView.draw(canvas);
                }
            } catch (Exception e) {} finally {
                if (canvas != null) {
                    try {
                        surfaceHolder.unlockCanvasAndPost(canvas);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

我希望onTouchEvent告诉我,当我触摸时动作是向下的,而当我不触摸时,动作是向上的,但动作保持在0不变。

更新7/22:

好了,经过一些测试,我发现update方法仍然可以运行,但是第一次绘制时冻结了draw方法,而在第二次单击后又恢复了绘制方法。现在也说我放开水龙头。

克里斯文·杰姆(Chrisvin Jem)

似乎那里有一个递归函数,您onTouchEventACTION_DOWN递归方式调用事件。

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                //Start of touch events 
                stage++;
                System.out.println(stage);
                handleTouches();
                System.out.println(onTouchEvent(event));
                //return onTouchEvent(event);
                return true;
            case MotionEvent.ACTION_UP:
                // End of touch events
                return true;
            case MotionEvent.ACTION_MOVE:
                // Moved touch events
                return true;
        }
        return true;
    }

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么默认情况下Hibernate不设置@DynamicInsert

为什么触摸屏幕时性能会提高?

在我的情况下,为什么要创建bean?

如何在不使用触摸屏的情况下模拟触摸事件

Windows 10-如何在没有触摸屏的情况下测试触摸事件?

当手指触摸屏幕时,为什么Android上的Timer更准确?

为什么我不能在不损失JS精度的情况下将字符串转换为数字?

Swift / ARKit:在不触摸屏幕的情况下将对象节点放置在检测到的表面上

为什么解析器无法在不崩溃的情况下将精灵绘制到屏幕上?

为什么Ubuntu在屏幕关闭的情况下从Flash引导?

为什么在以下情况下引发了不同类型的异常?

为什么默认情况下我的Dictionary <string,string>不区分大小写?

为什么在我的情况下array_multisort不排序?

为什么在某些情况下我的for循环不启动?

是否可以在不触摸ICMP的情况下进行traceroute?

触摸屏幕时为什么我的图像没有弹出?

为什么此命令可以在没有密码的情况下解锁我的锁定屏幕?(安全问题)

18.04: 如何在不暂停机器的情况下锁定我的屏幕?

在没有记住我选项的情况下将 itsdangerous 与 Flask-Login 一起使用是否更安全?为什么或者为什么不?

为什么我可以在不导入服务提供者模块的情况下使用服务?

为什么我可以在不订阅的情况下使用 Observable?

为什么我们可以在不创建新的 ArrayList 对象的情况下使用 ArrayList 的方法?

为什么我的基于 SOAP 的项目可以在不包含 Apache CXF 依赖项的情况下运行?

为什么我的 WASAPI 侦听器即使在没有播放的情况下也会触发?

我为什么要购买域名?我可以在不注册的情况下拥有自己的网站吗?

为什么我的父项列表在不添加项的情况下增长

在我的 Flutter 应用程序中,只有在我们触摸屏幕时才会加载页面内容。为什么?

如何在不触发屏幕阅读器的情况下聚焦元素

我已经嘲笑了服务,为什么在不注入服务依赖的情况下仍然出错?