autojs滑块源代码,通过四阶贝塞尔曲线

function bezierCreate(x1, y1, x2, y2, x3, y3, x4, y4) {

    //构建参数

    var h = 100;

    var cp = [{ x: x1, y: y1 + h }, { x: x2, y: y2 + h }, { x: x3, y: y3 + h }, { x: x4, y: y4 + h }];

    var numberOfPoints = 100;

    var curve = [];

    var dt = 1.0 / (numberOfPoints - 1);

    //计算轨迹

    for (var i = 0; i < numberOfPoints; i++) {

        var ax, bx, cx;

        var ay, by, cy;

        var tSquared, tCubed;

        var result_x, result_y;

        cx = 3.0 * (cp[1].x - cp[0].x);

        bx = 3.0 * (cp[2].x - cp[1].x) - cx;

        ax = cp[3].x - cp[0].x - cx - bx;

        cy = 3.0 * (cp[1].y - cp[0].y);

        by = 3.0 * (cp[2].y - cp[1].y) - cy;

        ay = cp[3].y - cp[0].y - cy - by;

        var t = dt * i

        tSquared = t * t;

        tCubed = tSquared * t;

        result_x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x;

        result_y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y;

        curve[i] = {

            x: result_x,

            y: result_y

        };

    }

    //轨迹转路数组

    var array = [];

    for (var i = 0; i < curve.length; i++) {

        try {

            var j = (i < 100) ? i : (199 - i);

            xx = parseInt(curve[j].x)

            yy = parseInt(Math.abs(100 - curve[j].y))

        } catch (e) {

            break

        }

        array.push([xx, yy])

    }

    return array

}

function randomSwipe(sx, sy, ex, ey) {

    //设置随机滑动时长范围

    var timeMin = 500

    var timeMax = 1000

    //设置控制点极限距离

    var leaveHeightLength = 500

    //根据偏差距离,应用不同的随机方式

    if (Math.abs(ex - sx) > Math.abs(ey - sy)) {

        var my = (sy + ey) / 2

        var y2 = my + random(0, leaveHeightLength)

        var y3 = my - random(0, leaveHeightLength)

        var lx = (sx - ex) / 3

        if (lx < 0) { lx = -lx }

        var x2 = sx + lx / 2 + random(0, lx)

        var x3 = sx + lx + lx / 2 + random(0, lx)

    } else {

        var mx = (sx + ex) / 2

        var y2 = mx + random(0, leaveHeightLength)

        var y3 = mx - random(0, leaveHeightLength)

        var ly = (sy - ey) / 3

        if (ly < 0) { ly = -ly }

        var y2 = sy + ly / 2 + random(0, ly)

        var y3 = sy + ly + ly / 2 + random(0, ly)

    }

    //获取运行轨迹,及参数

    var time = [0, random(timeMin, timeMax)]

    var track = bezierCreate(sx, sy, x2, y2, x3, y3, ex, ey)

    log("随机控制点A坐标:" + x2 + "," + y2)

    log("随机控制点B坐标:" + x3 + "," + y3)

    log("随机滑动时长:" + time[1])

    //滑动

    gestures(time.concat(track))

}

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值