#javascript
#язык JavaScript
Вопрос:
Пытался сделать такой сценарий:
let intervals = [], isClick = [], isGameOver = false, countElement = 3, count = 0, gameOver = function () { if (isGameOver) { return; } isGameOver = true; if (countElement lt;= count) { for (var i = 0; i lt; intervals.legth; i) { clearInterval(intervals[i]); } intervals = []; countElement = 0; } }, elm = function (index) { return function () { if (isGameOver || isClick[index]) { return null; } isClick[index] = true; clearInterval(intervals[index]); intervals[index] = null; if (!intervals.filter(a =gt; a).length) { count = countElement; gameOver(); return; } }; }; for (let i = 0; i lt; 17; i) { setTimeout(() =gt; { element.on('pointerup', elm(i)); intervals[i] = setInterval(() =gt; { if (countElement lt;= count) { clearInterval(intervals[i]); gameOver(); return; } if (-64 gt; element.position.y) { clearInterval(intervals[i]); intervals[i] = null; count; } else { element.position.y -= 30; } }, pos.speed); }, pos.startTime * i); }
Это действительно работает, но по какой-то причине не всегда работает так, как должно.
Возможно, я сразу скажу вам, что требуется .. Необходимо сгенерировать необходимое количество элементов и двигаться вдоль оси Y
.
У них должны быть разные скорости.
Я пытался решить эту проблему следующим образом:
let rnd = function (min, max) { return Math.floor(Math.random() * (max - min) min); }, pos = { speed: Math.floor(rnd(100, rnd(370, 470))), startTime: Math.floor(rnd(rnd(370, 470), rnd(700, 1000))) }
В общем, я бы хотел, чтобы элементы начали летать с разной скоростью вылета и полета, были попытки, которые можно пропустить, если элемент улетел, когда вы нажимаете на элемент, он останавливается.
Ну, на самом деле, если бы все элементы вылетели — неважно, улетели они или остановились, главное, чтобы все интервалы остановились и был бы какой-то выход …
Знатоки помогают понять, как это можно сделать без сторонних библиотек?
Как это правильно сделать, покажите, пожалуйста.
Комментарии:
1. трудно сказать, не видя проблемы в «рабочем» примере. Можете ли вы опубликовать демонстратор кода вашей проблемы с помощью кнопки lt;gt; (фрагмент кода Javascript/HTML/Css Cntrl-M) на панели инструментов редактора stackoverflow.
Ответ №1:
Проблема решена… Не было никакой необходимости обнулять countElement
и intervals
набирать обороты gameOver
. Из-за этого последующие интервалы были зациклены, так как показатели были нарушены.