cocoscreator 模拟点击
在制作新手引导或者自动化测试时,有了模拟点击真的方便不少,虽然cocos官方没有提供,但是查看源码还是支持的,这篇文章是转载自:https://forum.cocos.org/t/topic/83221https://github.com/ShawnZhang2015/GodGuide/blob/01b5041c255e0ea8dc5cb34ee63f4a4e4c3b344b/assets/Go.
·
在制作新手引导或者自动化测试时,有了模拟点击真的方便不少,虽然cocos官方没有提供,但是查看源码还是支持的,这篇文章是转载自:
https://forum.cocos.org/t/topic/83221
https://github.com/ShawnZhang2015/GodGuide/blob/01b5041c255e0ea8dc5cb34ee63f4a4e4c3b344b/assets/GodGuide/GodGuide.js#L25
function getHTMLElementPosition(element) {
var docElem = document.documentElement;
var leftOffset = window.pageXOffset - docElem.clientLeft;
var topOffset = window.pageYOffset - docElem.clientTop;
if (typeof element.getBoundingClientRect === 'function') {
var box = element.getBoundingClientRect();
return {
left: box.left + leftOffset,
top: box.top + topOffset,
width: box.width,
height: box.height
};
}
else {
if (element instanceof HTMLCanvasElement) {
return {
left: leftOffset,
top: topOffset,
width: element.width,
height: element.height
};
}
else {
return {
left: leftOffset,
top: topOffset,
width: parseInt(element.style.width),
height: parseInt(element.style.height)
};
}
}
}
// (x,y)世界坐标(左下角为0,0)
function touchSimulation(x, y) {
let rect;
//兼容2.2.x 与 2.3.2
let inputManager = window._cc ? window['_cc'].inputManager : cc.internal.inputManager;
if (cc.sys.isBrowser) {
let canvas = document.getElementById("GameCanvas");
rect = getHTMLElementPosition(canvas);
} else {
rect = cc.view.getFrameSize();
rect.left = 0;
rect.top = 0;
}
let vp = cc.view.getViewportRect();
let sx = cc.view.getScaleX();
let sy = cc.view.getScaleY();
let ratio = cc.view.getDevicePixelRatio();
let htmlx = (x * sx + vp.x) / ratio + rect.left;
let htmly = rect.top + rect.height - (y * sy + vp.y) / ratio;
let pt = cc.v2(htmlx, htmly);
cc.log(`模拟点击坐标:${pt.x}, ${pt.y}`);
let touch = inputManager.getTouchByXY(pt.x, pt.y, rect);
inputManager.handleTouchesBegin([touch]);
setTimeout(() => {
inputManager.handleTouchesEnd([touch]);
}, 200);
}
![Logo](https://devpress.csdnimg.cn/0eaa3f4efff14b1ab0a46fbad1f275ab.jpg)
这里是一个专注于游戏开发的社区,我们致力于为广大游戏爱好者提供一个良好的学习和交流平台。我们的专区包含了各大流行引擎的技术博文,涵盖了从入门到进阶的各个阶段,无论你是初学者还是资深开发者,都能在这里找到适合自己的内容。除此之外,我们还会不定期举办游戏开发相关的活动,让大家更好地交流互动。加入我们,一起探索游戏开发的奥秘吧!
更多推荐
所有评论(0)