问题: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);
这几个方法就可以正常的使用了