2014-03-24 84 views
0

我想知道如果可能的話,創建一個事件委託從另一個對象內的對象引用,這是場景。在KineticJS事件代表團

我在這兩個圓圈之間有2個圓圈和1條直線,每當任何圓圈改變它自己的位置時,它也必須更新直線的位置,這時我創建了一個自定義直線,作爲屬性(來源,目標) 作爲屬性,但不以這種方式約束事件。

什麼,我tryting做的是一樣的東西>

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

這是fiddle

回答

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/

+0

這是已經ry對清除一點點如何處理kinectJs很有用,我只想知道在每個對象引用上使用line屬性的目的是什麼,謝謝! –