2013-04-09 80 views
0

我有一個小問題。我動能階段是這樣的:kineticjs - 移位組中的形狀

Stage -> layer0 -> group0 -> shapes 
      layer1 -> group1 -> shapes 
      layer2 -> group2 -> shapes 

我需要移動1與組2時,都稱爲GROUP0事件(的dragstart,dragmove等)。我試圖做這樣的事情:

group0.draggable = true; 
group0.on('dragstart', function(){ 
    var a = #save first mouse position point 
}) 
group0.on('dragmove', function(){ 
    #ref to group1 and group2 is store in group0 and as i debugged in chrome, this object is properly recognize 
    group1.setPosition(my new positions x, y) 
    group2.setPosition(...) 
}) 

換句話說。我需要來自不同層次的連接組,並將它們對待,就像它們將嵌套在其他組中一樣。我的代碼不起作用,是錯誤還是我忘了什麼?如何實現這一目標?在控制檯中沒有錯誤,它只是不起作用,我可以移動group0,但group1和group2 setPosition函數不會改變任何東西,儘管它們似乎是正確調用。謝謝

+0

你可以把你的代碼放在jsfiddle中嗎?這樣我們可以看到它不起作用。 – SoluableNonagon 2013-04-09 13:22:02

回答

2

我只能推測,因爲我沒有你的代碼在我面前。

但首先要檢查的是您正在重繪圖層。

group0.on('dragmove', function(){ 
    #ref to group1 and group2 is store in group0 and as i debugged in chrome, this object is properly recognize 
    group1.setPosition(my new positions x, y) 
    group2.setPosition(...) 
    group1.getLayer().draw(); //redraw group1 layer 
    group2.getLayer().draw(); //redraw group2 layer 
    // stage.draw(); // also a possibility 
}) 

//you can also do transitions, which do redrawing for you. 
group1.transitionTo({ 
    duration: 1, //how long the animation takes in seconds 
    x: new position x coord 
    y: new position y coord 
}); 
//repeat for other groups you want moved 

另外,需要注意的是設定的位置不會改變它裏面的物品的位置,所以如果你在100,100有shape1那麼它仍然報告處於100,100組移動後,因爲這個位置是相對於它的容器的。

+0

謝謝你,我在代碼中發現了一個bug :) – Puchacz 2013-04-24 23:10:47