RequestAnimationFrame, Аргументы и Переменные - PullRequest
0 голосов
/ 19 апреля 2020

Итак, я пытаюсь создать функцию, которая заставит объект двигаться в изогнутом движении. Предполагается, что эта функция используется повторно и должна иметь возможность принимать разные числа в качестве аргументов. Числа будут служить контрольными точками, определяющими направление кривой. Я сталкиваюсь с двумя проблемами:

  1. При попытке использовать аргументы point0x и point0y вместо переменных в уравнениях, выводимые значения xt сильно отличаются от того, когда я использую переменные. Между тем, вывод для yt вырастет до NaN. Однако всякий раз, когда я вставляю p0.x и p0.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);
...