为了账号安全,请及时绑定邮箱和手机立即绑定

按下画布时如何调用方法

按下画布时如何调用方法

侃侃无极 2023-11-01 21:49:49
我正在开发一款带有车辆的游戏,我想在按下画布时移动这辆车,就像这样,但这不起作用。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_DOWNI/System.out: Hallo任何想法?
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

设置一个全局布尔值以了解何时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发生在界限之外时,您还需要进行设置。


查看完整回答
反对 回复 2023-11-01
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

可以onTouch这样完成onTouchEvent:


        @Override

        public boolean onTouchEvent(MotionEvent motionEvent) {


            switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) {


                    // Player has touched the screen

                case MotionEvent.ACTION_DOWN:


                    System.out.println("Hallo");


                    break;


                    // Player has removed finger from screen

                case MotionEvent.ACTION_UP:


                    break;

            }

            return true;

        }


查看完整回答
反对 回复 2023-11-01
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信