Ich versuche mehrere Instanzen verschiedener Objekte zum Array eines anderen Objekts hinzuzufügen. Ich habe jedoch Schwierigkeiten.Hinzufügen mehrerer Instanzen eines Objekts zum Array eines anderen Objekts;
*Creates the player*
function Player(){
this.name = "";
this.status = "Alive";
this.primaryClass = null;
this.secondaryClass = null;
this.strength = 0;
this.stamina = 0;
this.mystica = 0;
this.health = 0;
this.primaryWeapon = null;
this.offHand = null;
this.accuracy = 0;
this.block = 0;
this.baseDamage = 0;
this.maxDamage = 0;
this.attackSpeed = 0;
this.shield = null;
this.armor = null;
this.armorRating = 0;
this.exp = 0;
}
*Creates the sword weapon*
function LongSword(){
this.name = "";
this.attackSpeed = 1;
this.baseDamage = 10;
this.maxDamage = 15;
this.durability = 100;
this.block = 5;
this.exp = 0;
}
*Creates the Long Sword skills*
function Stab(){
this.name = "Stab";
this.status = "Unlocked";
this.damage = 0;
this.damageModifier = 0.75;
this.cooldown = 5;
this.exp = 0;
this.desc = "Stabs your opponent for an additional " +parseInt(this.damageModifier * 100) +"% of your base damage.";
}
*Equips the Player weapon(s)*
Player.prototype.equipWeapon = function equipWeapon(main, offHand){
if(this.primaryClass.dualWield){
this.primaryWeapon = main;
if(offHand){
this.offHand = offHand;
this.baseDamage += (this.strength + (main.baseDamage + (offHand.baseDamage/2)))/10;
this.maxDamage += (this.strength + (main.maxDamage + (offHand.maxDamage/2)))/5;
this.attackSpeed += main.attackSpeed + (offHand.attackSpeed/2);
this.block += main.block + offHand.block;
}
}
else{
this.primaryWeapon = main;
this.offHand = null;
this.baseDamage += (this.strength + main.baseDamage)/10;
this.maxDamage += (this.strength + main.maxDamage)/5;
this.attackSpeed += main.attackSpeed;
this.block += main.block;
}
if(!this.primaryClass.dualWield && offHand){
console.log("Your class can not wield dual weapons.");
}
}
*Equips the Weapon skills*
LongSword.prototype.skills = function skills(skill){
this.skills = [];
skill.damage = parseFloat((this.baseDamage/skill.damageModifier).toFixed(1));
this.skills.push(skill);
}
Diese Objekte konstruieren die grundlegenden Elemente von dem, was ich versuche zu tun. Also, wenn ich gehe, um jede zu instanziieren,
Ich bekomme die Ergebnisse, die ich will. Wenn ich jedoch eine andere Instanz Stab()
hinzufügen, um zu versuchen waren, so dass es aussieht wie dieses
var Robert = new Player();
Robert.equipWeapon(new LongSword());
Robert.primaryWeapon.skills(new Stab());
Robert.primaryWeapon.skills(new Stab());
ich die Typeerror erhalten: Robert.primaryWeapon.skills is not a function
. Warum würde es einmal richtig funktionieren, aber nicht ein zweites Mal? Das Endergebnis, von dem ich versuche, zu erreichen, ist, dass, wenn ich Robert.primaryWeapon.skills
ausgetröstet habe, ich zwei Instanzen des Stab
Objekts sehen sollte.
... und wahrscheinlich auch die 'dies. Skills'-Array sollte im'Player'' Weapon'-Konstruktor initialisiert werden, nicht die 'addSkill'-Methode. – Bergi
@Bergi, auch wenn die Fähigkeiten spezifisch für die Waffe sind? –
Es sollte dann auf 'Longsword' Konstruktor sein. – Bigood