【分享】分享解决开发板外接鼠标点击无效的解决办法。

问题:PC上正常的点击拖动,构建成安卓项目运行在开发板后所有的点击都无效,我这里使用的安卓开发板是外接鼠标使用的,没有屏幕触摸,运行在手机上完全正常。

遇到这种情况天都塌了!

怎么解决:
1、前两个项目使用的方法是,引擎端代码预留点击代码。
例:在Main.ts 里面设置方法

static doClickScene(x:number,y:number)

然后Main外面设置

window["Main.doClickScene"] = function(x,y){Main.doClickScene(x,y) }

解决。

2、接下来这个项目需要使用到拖动,在想如果还是用这种方法,大量的调用不知道会不会有问题,所以另寻了其他的解决办法。

构建了安卓项目后,会有一个AppActivity.java文件,这个类是继承CocosActivity,进入CocosActivity后找到onCreate方法
找到

mSurfaceView.setOnTouchListener

大概是这样子的

mSurfaceView.setOnTouchListener((view,event)->processMotionEvent(event));

这个应该就是官方在安卓端代码的统一获取触摸事件的方法
我们只需要把 MotionEvent 重新装填一遍就可以了。

mSurfaceView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            return processMotionEvent(MotionEvent.obtain(
                System.currentTimeMillis(), System.currentTimeMillis(), motionEvent.getAction(), motionEvent.getX(), motionEvent.getY(), 0
            ));
        }
    });

这样,在引擎里面设置的 Main.ts

node.on(Node.EventType.TOUCH_START, this.onTouchStart, this)
node.on(Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
node.on(Node.EventType.TOUCH_END, this.onTouchEnd, this);

这几个方法就可以正常的使用了

1赞