Javascript 如何每x秒创建一个对象?

Javascript 如何每x秒创建一个对象?,javascript,class,html5-canvas,Javascript,Class,Html5 Canvas,我是新的编码,我正在做一个javascript游戏。在这个游戏中,我想每5秒左右产生一个敌人。我已经创建了一个敌方类,并试图制作一个if语句,每5秒创建一个新的敌方(在我的例子中是300帧) if(framect%300==0)新敌人() 这是我的敌人班 var plusOrMinus = Math.random() < 0.5 ? -1 : 1; espd = plusOrMinus*Math.random()*13; class enemy{ constructor(){

我是新的编码,我正在做一个javascript游戏。在这个游戏中,我想每5秒左右产生一个敌人。我已经创建了一个敌方类,并试图制作一个if语句,每5秒创建一个新的敌方(在我的例子中是300帧)

if(framect%300==0)新敌人()

这是我的敌人班


var plusOrMinus = Math.random() < 0.5 ? -1 : 1;
espd =  plusOrMinus*Math.random()*13;

class enemy{
  constructor(){
    this.x =  Math.random() * window.innerWidth;
    this.y= Math.random() * window.innerHeight;
    this.xspd = espd;
    this.yspd = espd;
    this.size= 12;
    objects.push(this);
  }
  step(){
    this.x += this.xspd;
    this.y += this.yspd;

  }
  draw(){
    strokeColor(255, 0, 0);
    fillColor(255,0,0);
    circle(this.x,this.y,this.size);
  }
}

var plusOrMinus=Math.random()<0.5-1 : 1;
espd=plusor减号*Math.random()*13;
阶级敌人{
构造函数(){
this.x=Math.random()*window.innerWidth;
this.y=Math.random()*window.innerHeight;
this.xspd=espd;
this.yspd=espd;
这个。大小=12;
物体。推(这个);
}
步骤({
this.x+=this.xspd;
this.y+=this.yspd;
}
画(){
strokeColor(255,0,0);
fillColor(255,0,0);
圆圈(这个.x,这个.y,这个.size);
}
}
当我尝试这样做时,它只制造了一个敌人。我知道,因为我有一张物品清单,清单上只有一个敌人。我该怎么做

我很确定framect不会有问题,因为它会随着每一帧的增加而增加。下面是我如何进行帧计数和游戏循环的

function loop(){
  stepLoop();
  drawLoop();
  keyEnd();


}

function stepLoop(){
  for (var i = 0; i<objects.length; i++) {
    if(objects[i].step) objects[i].step();
    framect++;
  }
}
function drawLoop(){
  background(25, 25, 25);
  for (var i = 0; i<objects.length; i++) {
    if(objects[i].draw) objects[i].draw();
  }
  hero.draw();
}
var target_fps = 60;
setInterval(loop, 1000/target_fps);
函数循环(){
stepLoop();
drawLoop();
keyEnd();
}
函数stepLoop(){

对于(var i=0;i,您可以尝试为每个新敌人创建一个新变量,并创建一个包含所有敌人的全局变量

var enemies = []; // when creating a new enemy define it here
if(framect % 300 === 0) { 
  enemies[enemies.length + 1] = new enemy();
 } // this goes into your loop

为什么
framect++
在for循环中?看起来这不是所述变量的预期用途。 对于代码,当
对象
数组为空时,代码将不会到达行
framect++
,因此不会更新帧

for (var i = 0; i<objects.length; i++) {
    if(objects[i].step) objects[i].step();
    // framect++;
}
framect++; // I think this is how it should be

for(var i=0;iHey,这确实奏效了!我只需要为敌人类稍微修改一下我的数学,很快我就有了随机繁殖的敌人向随机方向移动。谢谢!没问题!不客气:)。请将问题标记为已解决。谢谢!