Это вопрос к игре, над которой я работаю в Game Lab на Code.org. Рассматриваемая игра будет похожа на игру с парашютом, в которой препятствия появляются через случайные интервалы (от 1000 до 3000 мс). Вот код:
World.frameRate = 10;
var rects = createGroup();
var timeout = Math.round(randomNumber(800, 3000) / 100) * 100;
function draw() {
background("white");
drawSprites();
if (World.frameCount === Math.round(randomNumber(1000, 3000) / 100) * 100) {
World.frameCount = 0;
creation();
}
}
function creation() {
var obstacle = createSprite(randomNumber(100, 300), 200, 50, 20);
obstacle.velocityY = -2;
}
/*
setInterval(function() {
creation();
}, Math.round(randomNumber(800,3000)/100)*100);
*/
Чтобы создать механизм порождения, я попытался использовать функции setInterval()
и setTimeout()
, но с этими двумя при первом выполнении он создает случайный number и оттуда продолжает порождать объекты с тем же интервалом. Я не мог найти обходных путей, поэтому перешел на World.frameCount
. Эта концепция работает, однако из-за оператора ===
препятствия будут появляться только между 1 и 3 секундами, через 3 секунды объекты не смогут появляться. Чтобы исправить это, я добавил в строку 9 (World.frameCount = 0;
). При запуске возникает ошибка:
ERROR: Line: 9: TypeError: Cannot set property frameCount of #<Object> which has only a getter
Я понимаю, что эта ошибка вызвана тем, что вы не можете изменить значение World.frameCount
. Есть ли какие-то обходные пути? Я также был бы признателен за любые предложения относительно других способов сделать это.
Вот ссылка на проект Code.org: Skydive v1.0