static touchNode (node:cc.Node) {
const glPos = node.convertToWorldSpaceAR(cc.v2());
setTimeout(() => {
this.touchSimulation(glPos);
}, 0);
}
// 模拟点击
static touchSimulation (glPos: cc.Vec2) {
let rect;
// @ts-ignore
const inputManager = cc.internal.inputManager;
if (cc.sys.isBrowser) {
const canvas = document.getElementById('GameCanvas');
rect = this.getHTMLElementPosition(canvas);
} else {
rect = cc.view.getFrameSize();
rect.left = 0;
rect.top = 0;
}
const vp = cc.view.getViewportRect();
const sx = cc.view.getScaleX();
const sy = cc.view.getScaleY();
const ratio = cc.view.getDevicePixelRatio();
const htmlx = (glPos.x * sx + vp.x) / ratio + rect.left;
const htmly = rect.top + rect.height - (glPos.y * sy + vp.y) / ratio;
const pt = cc.v2(htmlx, htmly);
// cc.log(`模拟点击坐标:${pt.x}, ${pt.y}`);
const touch = inputManager.getTouchByXY(pt.x, pt.y, rect);
const touchEnd = inputManager.getTouchByXY(pt.x, pt.y, rect);
inputManager.handleTouchesBegin([touch]);
inputManager.handleTouchesEnd([touchEnd]);
// setTimeout(() => {
// inputManager.handleTouchesEnd([touch]);
// }, 100);
}