EasyClick版通用贝塞尔曲线(1~n阶)

/**
*作者冉遗鱼 QQ:244574798
*教程视频地址:https://www.bilibili.com/video/BV1fz421v7NP/
*辅助软件下载:https://wwa.lanzoui.com/b00v03rpc 密码:2oe7
*/

function main() {
inti();//EC一些初始化无障碍服务等

//EC和Aj版本的控制点
let CtrlPt =[[157,342],[166,175],[323,152],[433,200],[470,322],];
//执行贝塞尔
bezier(3000,0.02, CtrlPt);

}

/**
*

  • @param time_m {number} 执行时间 ms 例如 3000

  • @param t {number} 间隔系数 0-1 间, 越小线条线条越圆润,计算量越大, 例如 0.005

  • @param pt {number[][]} 控制点坐标的二维数组 例如 [[137,169],[140,283]]
    */
    function bezier(time_ms,t,pt){

    let fps = 1 / t;
    let resultPos=[];//点比线段多1
    for (let i = 0; i <= fps; i++)
    {
    let copyArr = Array.from(pt, row => row.slice()); //拷贝一份 js的数组是引用传递
    resultPos[i]= calculateBezier(i*t, copyArr);
    }
    let touch1 =[];
    let _time=time_ms/resultPos.length;//时间间隔

    touch1.push({“action”: 0, “x”: resultPos[0][0], “y”: resultPos[0][1], “pointer”: 1, “delay”: _time})
    for (let i = 1; i <resultPos.length-1 ; i++) {
    touch1.push({“action”: 2, “x”: resultPos[i][0], “y”: resultPos[i][1], “pointer”: 1, “delay”: _time})
    }
    touch1.push({“action”: 1, “x”: resultPos[resultPos.length-1][0], “y”: resultPos[resultPos.length-1][1], “pointer”: 1, “delay”: _time})
    let x = multiTouch(touch1, null, null, 30000);
    }

/**
*

  • @param t {number} 0 ~ 1的时间

  • @param point2Fs {number[][]}贝塞尔点集合

  • @return {number[]} 返回当前时间下的贝塞尔点
    */
    function calculateBezier( t, point2Fs )
    {
    let len = point2Fs.length;
    for (let i = len - 1; i > 0; i–)
    {
    for (let j = 0; j < i; j++)
    {
    point2Fs[j][0] = point2Fs[j][0] + (point2Fs[j + 1][0] - point2Fs[j][0]) * t;
    point2Fs[j][1] = point2Fs[j][1] + (point2Fs[j + 1][1] - point2Fs[j][1]) * t;
    }
    }

    return [ parseInt(point2Fs[0][0]),parseInt(point2Fs[0][1]) ];
    }

function autoServiceStart(time) {
for (var i = 0; i < time; i++) {
if (isServiceOk()) {
return true;
}
var started = startEnv();
logd(“第” + (i + 1) + "次启动服务结果: " + started);
if (isServiceOk()) {
return true;
}
}
return isServiceOk();
}

//一些初始化的东西
function inti(){

//如果自动化服务正常
if (!autoServiceStart(3)) {
    logd("自动化服务启动失败,无法执行脚本")
    exit();
    return;
}
var request = image.requestScreenCapture(10000,0);
if (!request) {
    request = image.requestScreenCapture(10000,0);
}
logd("申请截图结果... "+request)
if (!request) {
    logd("截图申请失败");
    return;
}else{
    sleep(500);
}

}

main();

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值