Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从动能.Rect_Javascript_Kineticjs - Fatal编程技术网

Javascript 如何从动能.Rect

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

我正在使用图形绘制光栅。这可以使用Kinetic.Rect工作。现在我想使用其他对象,而不是。在这个对象中,我应该能够在光栅中保存位置的x和y。我必须输入以下代码:

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);