为什么x& y值不增加?

时间:2015-08-17 10:58:48

标签: javascript joystick

我正在构建一个虚拟操纵杆,这是我制作的代码的一部分,这样当操纵杆介于某个值之间时,x和y值将继续增加某个值,例如当操纵杆介于两者之间时对于deltaX,它将保持每秒递增一次,如果它在21到40之间,它将每秒递增两次,我希望它保持递增而不保持相同的值2。当我尝试这段代码时,x& y值只是坚持1,2或3并且没有增加,有人能说明为什么会这样吗?

编辑: If语句需要在函数之外,因为操纵杆会断开,如果它在里面则不会运行。

       if (joystick.deltaX() >= 1 && joystick.deltaX() <= 20) {
            (function movex1() {
                x = x + 1;
                setTimeout(movex1, 1000);
            })();
        }

        if (joystick.deltaX() >= 21 && joystick.deltaX() <= 40) {
            (function movex2() {
                x = x + 2;
                setTimeout(movex2, 1000);
            })();
        }

        if (joystick.deltaX() >= 41 && joystick.deltaX() <= 60) {
            (function movex3() {
                x = x + 3;
                setTimeout(movex3, 1000);
            })();
        }

        if (joystick.deltaY() >= 1 && joystick.deltaY() <= 20) {
            (function movey1() {
                y = y + 1;
                setTimeout(movey1, 1000);
            })();
        }

        if (joystick.deltaY() >= 21 && joystick.deltaY() <= 40) {
            (function movey2() {
                y = y + 2;
                setTimeout(movey2, 1000);
            })();
        }

        if (joystick.deltaY() >= 41 && joystick.deltaY() <= 60) {
            (function movey3() {
                y = y + 3;
                setTimeout(movey3, 1000);
            })();
        }

1 个答案:

答案 0 :(得分:0)

当你的代码执行时,joystick.deltaX()和joystick.deltaY()的值可能更大,因此不会设置超时。

另外,当你可以用一个部门替换它们时,要避免这么多ifs。

为什么不使用间隔?

return Views::with('User', 'User.Images')
    ->where('viewed_id', '=', Auth::user()->id)
    ->paginate(20);