Я занимаюсь разработкой онлайн-игр. Я пытаюсь сделать онлайн-игру FPS, и я только дошел до того, что мне нужно обновить свой персонаж. Я стараюсь, чтобы мой код был прост, используя только функцию рисования и обновления. Когда HTML загружает, я исполняю как: (Нужно ли это?)Функции обновления Javascript
<body onload='DRAW(); UPDATE();'>
Функция Жеребьевка рисует игрока на экран, и обновление предполагается проверить на нажатие клавиши для перемещения персонажа. Я пытаюсь сделать обновление скрипта с помощью этого:
function UPDATE()
{
update = setInterval(UPDATE, 60);
}
и мне известно, что он работает нормально, потому что, когда я пытаюсь изменить код в моем интернет-IDE (c9.io), который я использую для тестирования сайта , он зависает, когда сайт работает. Я также вызываю eventListeners в функции draw. (Является ли это правильным, если я хочу проверить для ключа вниз каждый кадр?)
function DRAW()
{
window.addEventListener('keydown', function (e) {
keys.keys = (keys.keys || []);
keys.keys[e.keyCode] = true;
});
window.addEventListener('keyup', function (e){
keys.keys[e.keyCode] = false;
});
}
Мои вопросы:
Есть ли более простой способ сделать обновление сценария каждый кадр?
Есть ли JavaScript-аддон (например, Three.js) Я могу использовать, чтобы сделать более легким для себя?
Любые знания очень ценятся.
DRAW() должен быть вызван только один раз в части HTML (насколько мне известно),
, спасибо за информацию о setInterval, хотя. Я знал, что это рушится, я просто не мог понять, почему. Я проверю статью –@TaylorBrown Подумайте об этом как о эквиваленте ядерной цепной реакции. После запуска всего за 960 мс у вас уже есть 65536 интервалов, работающих параллельно, и он просто удваивается каждые 60 мс. Ваш компьютер не может справиться с этим, и браузер выйдет из строя. – dannyjolie
Хорошая аналогия, теперь имеет гораздо больше смысла. –