У меня есть несколько таких объектов, как это (16)Как создать несколько объектов? (JavaScript)
function Baboo(x,y,size,speed,target,sps,life){
MobRoot.call(this,x,y,size,speed,target,sps,life);
this.spsCoord = [500*0,500*3,500,500];
this.coolDown = 60;
this.atack = 0;}
Baboo.prototype = Object.create(MobRoot.prototype);
Baboo.prototype.throw = function()
{
projectiles.push(new Arrow(this.x,this.y,10,10,this.angle,150,this.target));
}
Baboo.prototype.update = function(){
if(this.life>0)
{
this.sendBack();
this.draw();
this.checkClick();
this.angle = CalculateSlope(this,this.target);
this.directionUpdate();
this.updateBuffs();
this.x += this.direction.x;
this.y += this.direction.y;
}}
/*etc aditional methods*/
, что унаследует все из этого объекта
function MobRoot(x,y,size,speed,target,sps,life)
{
this.size = size*WindowScale;
this.x = x;
this.y = y;
this.angle = 0;
this.speed=speed;
this.colided=false;
this.maxlife = life;
this.life = life;
this.buffArray = [];
this.sps = sps;
this.target = target;
this.direction =
{
x:0,
y:0
}
//x,y,w,h
//ex sprite[0][0] = 0,0,500,500;
this.spsCoord = [];
this.isBoss = false;
}
MobRoot.prototype.directionUpdate = function()
{
this.direction.x = this.speed*Math.cos(this.angle)*-1;
this.direction.y = this.speed*Math.sin(this.angle)*-1;
}
/*aditional methods for mobRoot*/
, и я хочу, чтобы создавать различные мобы из массив. На данный момент я назначаю число для каждого типа (например: 1-Baboo 2-Spider 3-Whatever) и сохраняя эти числа в массивах, а когда я их создаю, я использую переключатель для каждого mobIndex из массива вроде это
switch(wave[i])
{
case 1:
mobs.push(new Baboo(arg1,arg2,...));
break;
case 2:
mobs.push(new Spider(arg1,arg2,...));
break;
/*...*/
case 999:
mobs.push(new Whatever(arg1,arg2,...));
break;
}
Есть ли более элегантный способ решения такого рода проблем?
Каждый раз, когда вы создаете новый 'Baboo', вы заменяете' Baboo.prototype', так что вы потеряете все функции прототипа, которые вы присвоенные когда вы загрузили скрипт. – Barmar
Итак, мне нужно «Baboo.prototype = Object.create (MobRoot.prototype);' вне конструктора? @Barmar –
Да. Это нужно сделать только один раз, как и все другие настройки прототипа. – Barmar