KineticJS的事件代表团

时间:2014-03-24 23:10:52

标签: javascript kineticjs

我想知道是否有可能从另一个对象内的对象引用创建一个事件委托,这就是场景。

我在这两个圆圈之间有两个圆圈和一条直线,每当任何一个圆圈改变自己的位置时,它也必须更新直线的位置,此时我已经创建了一个自定义直线引用两个圆作为属性(原点,目标) 但并没有以这种方式约束事件。

我尝试做的事情就像>

this.origin.on('dragstart dragmove',function(){
    console.log("origin mouse move");
    this.setPoints([origin.getX(),origin.getY(), target.getX(), target.getY()]);
    this.draw();
});

这是fiddle

1 个答案:

答案 0 :(得分:0)

buildArrow: function(origin,target){
    var arrowInstance = new Shape.Arrow({
       points: [origin.getX(),origin.getY(), target.getX(), target.getY()],
        stroke: '#629DD1',
        tension: 1
    });
    arrowInstance.origin=origin;
    origin.line = arrowInstance;

    arrowInstance.target=target;
    target.line = arrowInstance;
    return arrowInstance;
},
updatePosition : function() {
    this.points([this.origin.getX(),this.origin.getY(), this.target.getX(), this.target.getY()]);
},

然后:

this.on('dragstart dragmove',function(){
    var centerpoint = (this.cellSize/2)
     this.setX(((Math.round(this.getX() / centerpoint) * centerpoint)));
    this.setY(((Math.round(this.getY() / centerpoint) * centerpoint)));
    this.line.updatePosition();
});

演示:http://jsfiddle.net/lavrton/5Wkph/28/