首页 > 解决方案 > 按下画布时如何调用方法

问题描述

我正在开发一个带有车辆的游戏,我想在按下画布时移动这辆车,但这样不起作用。

public boolean onTouch(View v, MotionEvent event) {

    if (event.getX() > 0 && event.getX() < 150 && event.getY() > 550 && event.getY() < 700) {

           do{

              System.out.println("Hallo");

              }while (canvas.isPressed());

        return false;

但我只是得到这个输出:

D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
I/System.out: Hallo

任何想法?

标签: javaandroid

解决方案


设置一个全局布尔值以了解何时MotionEvent.ACTION_DOWN收到事件。

   mUserTouched = true; // Set to true when MotionEvent.ACTION_DOWN
   mUserTouched = false; // set to false when MotionEvent.ACTION_UP is received

然后,您可能想要使用一个Timer或其他一些循环器,只要收到 MotionEvent.ACTION_DOWN 就会开始启动。invalidate()并让它根据某个时间间隔触发调用。invalidate()将导致View.onDraw()被调用,因此您可以重新绘制汽车的位置。当收到 MotionEvent.ACTION_UP 时,取消Timer

如果有界限,那么mUserTouched = false'每当MotionEvent发生超出界限时,您还需要设置界限。


推荐阅读