Для этого должно быть действительно простое решение, поскольку я попытался возиться с setInterval(), но не могу получить результат, который я хочу. .Delay tick() каждого спрайта в globalTick() JS
у меня есть этот globalTick()
function globalTick(){
ctx.clearRect(0,0,800,800)
if(target){
target.tick();
}
// Move arrows
for(var i = 0; i < spriteList.length; i++){
spriteList[i].tick()
}
window.requestAnimationFrame(globalTick);
}
document.onkeyup = function(e){
// Change gamestate
if(e.which == 13){
$("#state"+gameState).hide()
gameState ++
if(gameState == 6){
// Affect game variables
player = new Player(0);
target = new Target(targetX, targetY)
for(var i = 0; i < player.calculateNotes(); i++){
timerID = setInterval(spawnArrows(), 3000)
}
clearInterval(timerID)
}
// ...
spawnArrows = function(){
// Rabdomize arrows (15 for now)
var dirCode = Math.floor((Math.random() * 8));
spriteList.push(new Arrow(dirCode))
//soundsSequence.push(soundsList[dirCode])
}
Тогда у меня есть этот клещ() метод на моих спрайтов, в этом случае объект Arrow
class Arrow{
constructor(dirCode){
this.dirCode = dirCode;
this.speedX = 1
this.speedY = 1
switch(this.dirCode){
// ...
}
tick(){
ctx.fillStyle = "black"
ctx.fillRect(this.x, this.y, spriteSize, spriteSize)
switch(this.dirCode){
case 0:
this.x += this.speedX
break
case 1:
this.x += this.speedX
this.y -= this.speedY
break
// ...
Ive пощадил вас, ребята переменную деклараций.
То, что я хочу, - это задержать каждую новую стрелку, вдвинутую в массив, на установленное время, которое существует внутри другого объекта, скажем, 3 секунды в примере. Можно ли даже замедлить работу в globalTick(), который называется 60 раз или около того по запросуAnimationFrame? Идеально в чистом JS, если только JQuery - единственный способ пойти ...
Большое спасибо, надеюсь, что это достаточно ясно!
Посмотрите здесь http://stackoverflow.com/questions/42318765/how-can-i-make-3-thousand-requests-to-google-drive-api-using-node-js-without-exc Я объяснил как сделать водопад с обещаниями –