0

因此,我正在尝试创建一个使对象以弯曲运动移动的功能。这个函数应该被重用并且应该能够将不同的数字作为参数。这些数字将用作指导曲线方向的控制点。我面临两个问题:

  1. 当尝试使用参数point0xpoint0y不是方程中的变量时,输出的xt值与我使用变量时的差异很大。同时,输出ytNaN. 但是,每当我插入p0.xp0.y替换它们时,一切都会按预期进行。

  2. 我想用它cancelRequestAnimationFrame();来停止动画递归。我不断收到错误消息:

    cancelRequestAnimationFrame 未定义。

    我需要在完全不同的功能中取消吗?我应该避免在if声明中使用它吗?

function parameter_test(point0x, point0y) {

        var p0 = {x:0, y:700};
        var p1 = {x:20, y:100};
        var p2 = {x:200, y:100};
        var p3 = {x:200, y:0};

        var cx = 3 * (p1.x - point0x);
        var bx = 3 * (p2.x - p1.x) - cx;
        var ax = p3.x - point0x - cx - bx;
        var cy = 3 * (p1.y - point0y);
        var by = 3 * (p2.y - p1.y) - cy;
        var ay = p3.y - point0y - cy - by;
        var xt = ax * Math.pow(t, 3) + bx * Math.pow(t, 2) + cx * t + point0x;
        var yt = ay * Math.pow(t, 3) + by * Math.pow(t, 2) + cy * t + point0y;

        t += speed;
        if (t > 1) {
            t = 1;
            cancelRequestAnimationFrame(parameter_test);
        }
        requestAnimationFrame(parameter_test);

        console.log(xt, yt);    

}

parameter_test(0, 700);
4

0 回答 0