我正在构建一个虚拟操纵杆,这是我制作的代码的一部分,这样当操纵杆介于某个值之间时,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);
})();
}
答案 0 :(得分:0)
当你的代码执行时,joystick.deltaX()和joystick.deltaY()的值可能更大,因此不会设置超时。
另外,当你可以用一个部门替换它们时,要避免这么多ifs。
为什么不使用间隔?
return Views::with('User', 'User.Images')
->where('viewed_id', '=', Auth::user()->id)
->paginate(20);