Javascript 如何从动能.Rect
我正在使用图形绘制光栅。这可以使用Kinetic.Rect工作。现在我想使用其他对象,而不是。在这个对象中,我应该能够在光栅中保存位置的x和y。我必须输入以下代码:Javascript 如何从动能.Rect,javascript,kineticjs,Javascript,Kineticjs,我正在使用图形绘制光栅。这可以使用Kinetic.Rect工作。现在我想使用其他对象,而不是。在这个对象中,我应该能够在光栅中保存位置的x和y。我必须输入以下代码: function Tile(rasterX, rasterY, occupied, config) { Kinetic.Rect.call(this, config); this.rasterX = rasterX; this.rasterY = rasterY; this.occupied = oc
function Tile(rasterX, rasterY, occupied, config) {
Kinetic.Rect.call(this, config);
this.rasterX = rasterX;
this.rasterY = rasterY;
this.occupied = occupied;
}
Tile.prototype = new Kinetic.Rect();
Tile.prototype.constructor = Tile;
现在,我更改了Kinetic.Rect的代码,该代码创建自(此操作有效):
致:
不知何故,配置没有正确地传递给Kinetic.Rect构造函数,因为创建的所有平铺的x和y都是相同的(画布的右下角)。但是颜色是存在的。哼,是不是
动能.Rect
构造函数逻辑变异了对象的某些部分,从而导致了这种wierd行为
尝试使用Tile.prototype=Object.create(dynamic.Rect.prototype)代码>用于替代继承
不同之处在于Object.create
将返回具有指定原型的新对象,而new
操作符在执行Tile.prototype=new dynamic.Rect()时返回新对象代码>还设置了原型链,但也运行了构造函数逻辑,这可能会产生不希望的副作用。下面是我扩展动能对象的方法
MyCircle = function(config) {
Kinetic.Circle.call(this, $.extend({
x: 0,
y: 0
}, config));
};
MyCircle.prototype = {
myFunc: function() {
}
}
Kinetic.Global.extend(MyCircle, Kinetic.Circle);
嗯,是不是Kinetic.Rect
构造函数逻辑变异了对象的某些部分,从而导致了这种wierd行为?尝试使用Tile.prototype=Object.create(dynamic.Rect.prototype)代码>用于继承。谢谢!那确实有效。你能把它作为答案贴出来吗?并解释Object.create和我的代码之间的区别。你知道区别吗?
var tile = new Tile(j, i, false, {
width: drawWidth,
height: drawHeight,
stroke: 'black',
fill: 'grey',
x: x,
y: j * drawHeight
});
MyCircle = function(config) {
Kinetic.Circle.call(this, $.extend({
x: 0,
y: 0
}, config));
};
MyCircle.prototype = {
myFunc: function() {
}
}
Kinetic.Global.extend(MyCircle, Kinetic.Circle);