我确定我的问题相对容易回答,但作为初学者我真的很难回答。
所以我从各种来源学习了(至少我认为我已经学习了)Javascript 的基础知识,但是我真的在对象、类和语法方面苦苦挣扎。我完全理解这个概念,多年来我一直在基础水平上使用各种编程语言,但是,我正在努力实现我在 JS 中学到的东西。
基本上,我正在尝试开发一个简单的框架来制作视觉小说游戏,以此作为证明我所学知识的练习。所以我的整个框架可以简化为两个基本对象,一个场景和一个 Angular 色。所以我试图像这样充实我的 Angular 色对象:
function character (race,gender,age)
{
this.race = race;
this.gender = gender;
this.age = age;
}
//lets make an elf race based on the character prototype
var elfRace = new character("elf","m",100);
基本上我的目标是完成以下层次结构
Character
Race 1 Race 2 Race 3
ActualChar ActualChar ActualChar ActualChar ActualChar
所以我的最终 Angular 色将派生自定义的 Race,而 Race 将派生自 Angular 色对象。
现在我的问题是,我不知道如何将 Race 设置为从 Character 派生。我是否将 character 声明为 Race 的原型(prototype)?还是我
var newrace = new Character();
以及如何为比赛添加额外的“技能”或“参数”?所以 Sprite 种族应该有文本:+5 和恶魔种族力量:+5,但这些参数应该只添加在种族对象级别。
我尽量保持重点和简短,但如果您想了解更多关于我正在尝试做的事情的细节,我也写了一篇关于它的博客文章,如果有更多细节的话要求:http://www.endangeredpixel.com/
希望我能在这个问题上得到一些帮助,我已经尝试更多地研究对象、层次结构和原型(prototype),但我要么得到过于简单的解释和教程,要么得到超出我技能水平的咆哮、漫谈和极其高级的教程。我正在努力在中间阶段在这里找到解释:(。
最佳答案
好吧,你可以做这样的事情。虽然你可以根据自己的喜好制作更少或更多的构造函数。现在我正在使用 Angular 色、种族和玩家(实际 Angular 色)。您可以使用不同的 Race 构造函数,例如 ElfRace、DemonRace,但对于像 2 场比赛这样简单的事情,您可以像我一样只使用一个。这是总体思路,您可以对其进行修改以满足您的特定需求。
function Character(gender, age) {
this.gender = gender;
this.age = age;
}
function Race(gender, age, race) {
Character.call(this, gender, age); //inherit from Character
this.race = race;
if (race == 'elf') {
this.dexterity = 5;
} else if (race == 'demon') {
this.strength = 5;
}; // you could check for more races here.
}
function Player(name, age, gender, race) {
Race.call(this, gender, age, race); //inherit from Race
this.name = name;
}
var player1 = new Player("Legolas", 100, "m", "elf");
alert(player1.name); //Legolas
alert(player1.age); //100 years old
alert(player1.gender); //m
alert(player1.race); //elf
alert(player1.dexterity); //5
alert(player1.strength); // undefined because elf's have dexterity not strength
在这个例子中,我创建了一个 player1,名字叫 Legolas,年龄 100 岁,男性, Sprite 种族。这里还有一个 jsfiddle
如果您想添加更多种族,则必须更新 Race 构造函数中的 if 语句,以便为您要添加的特定种族分配技能。
关于javascript - 开发一个 super 简单的js框架作为对象练习的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17482649/