我正在开发基于浏览器的node.js服务器游戏。我试图实现一个基于组件的继承结构,但我不确定关于JavaScript继承的概念。基于Javascript组件的游戏设计
据我所知,如果我想继承两个组件对象,例如function Moves(){}
和function IsVisible(){}
,通常的原型继承不起作用:
gameObject.prototype = new Moves;
gameObject.prototype = new IsVisible;
的是IsVisible
对象将覆盖Moves
对象作为gameObject
原型。
以下是我尝试创建一个继承函数,它将目标对象和任意数量的组件对象作为参数。目标对象然后继承这些组件的行为和变量。
我不熟悉javascript继承,并想知道下面的方法是否是一种在javascript中实现多继承类型结构的好方法?
是否还有其他已确立的实践来处理这个问题? (如果这是一个问题...)
任何帮助将不胜感激。
function inherit(o){
var proto = o;
for(var i = 1; i < arguments.length; i++){
var component = new arguments[i]();
for(var x in component){
proto[x] = component[x];
}
}
}
function Player(name){
var o = {};
o.name = name;
inherit(o, WorldSpace, Active);
return o;
}
function WorldSpace(){
this.pos = {x:0, y:0};
this.orientation=0;
}
function Active(){
this.acceleration = 1;
this.velocity = {x:0,y:0};
this.rotation = 0;
this.rotationSpeed = (Math.PI*2)/30;
this.throttle = false;
this.currentSpeed = 0;
this.maxSpeed = 10;
}
尝试使播放器构造函数,并使用传统的JavaScript继承方式,可以在网络上找到。 – Bergi
@Bergi Javascript不支持多重继承,所以使用'person.prototype = new WorldSpace; person.prototype = new Active'不起作用。 – RobotEyes
你不想多重继承,你只需要混入 - 你的代码中没有原型。 AaditMShah是完全正确的。 – Bergi