Мне нужна помощь в создании цикла в консоли разработчика в Firefox - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь использовать консоль разработчика, чтобы давать марио гриб каждые 5 секунд (в браузерной игре super mario html5)

Я могу дать грибы марио вручную, набрав marioShroons (mario), но мне хотелось бычтобы он был на петле, чтобы мне не приходилось приостанавливать игру каждый раз, когда я хочу гриб.Я пробовал цикл времени и установил таймаут, но не могу понять это.Единственные языки кодирования, с которыми я знаком, это c ++ и html.**

while(data.time.amount > 0) {
  killOtherCharacters()
}

setTimeout(function() {
  killOtherCharacters()
}, 1000);

Я ожидал, что эти строки кода не дадут мне грибов, но будут автоматически убивать врагов.Но с первой попытки (цикл while) она заморозила вкладку, и мне пришлось перезагрузить страницу.

С установленным таймаутом он не дал никаких очевидных результатов, он убил всех близких персонажей один раз и затем остановился.

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

Используйте setInterval, если вы хотите, чтобы killOtherCharacters () вызывался повторно.

const interval = setInterval(function() {killOtherCharacters() },1000);

Затем, когда вы хотите, чтобы функция перестала вызываться:

clearInterval(interval);
0 голосов
/ 27 декабря 2018

Вы пытались использовать setTimeout, и это сработало только один раз.Этого следует ожидать, потому что:

Window.setTimeout() устанавливает таймер, который выполняет функцию или указанный фрагмент кода по истечении времени таймера

С MDN

Вам нужно использовать setInterval:

Метод setInterval() ... многократно вызывает функцию или выполняет фрагмент кода с фиксированным кодомзадержка между каждым вызовом.

С MDN

Итак, в вашей консоли вы должны написать следующее:

setInterval(killOtherCharacters, 1000);

(Iудалил анонимную функцию, потому что она не была нужна - анонимная функция нужна вам, только если вы передаете параметры или делаете несколько вещей. Для этого вам нужно удалить ())

И еслиВы хотите остановить выполнение функции, назначьте переменную интервалу:

var killCharacters = setInterval(killOtherCharacters, 1000);

Затем вызовите clearInterval для этой переменной, чтобы очистить интервал (остановить цикл):

clearInterval(killCharacters);
0 голосов
/ 27 декабря 2018

Причина, по которой ваш цикл while заморозил страницу, заключается в том, что Javascript может выполнять только одно действие за раз, и вы сказали ему всегда запускать функцию while, блокируя запуск всех остальных Javascript на вашем сайте.

setTimeout запускается только один раз после установленного времени ( см. Документацию ), если вы хотите запускать что-то каждые x миллисекунд, лучше использовать setInterval вместо .

var intervalID = window.setInterval(killOtherCharacters(), 500); //run this every 500 ms
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...