2013-05-14 78 views
1

我在Kineticjs麻煩,在我的代碼:如何獲得具有相同類型Kineticjs的兒童?

var G1=new Kinetic.Group() 

var sq=new Kinetic.Rect({ 
x:0, 
y:0, 
name:"sq" 
}) 
var line1=new Kinetic.Line({ 
Points:[0,0,10,10], 
name:"line1" 
}) 

var line2=new Kinetic.Line({ 
Points:[0,0,50,50], 
name:"line1" 
}) 

G1.add(sq).add(line1).add(line2) 

我知道,從G1得到孩子們只需鍵入「G1.getChildren()」。但要獲得相同類型的孩子,例如類型Kinetic.Line,我不知道。 請幫助我,tahnks

+0

你可以迭代你從'G1.getChildren()'得到的對象並按名稱比較嗎? – thinklinux

+0

是的,我可以,但有沒有簡單的方法來做到這一點。因爲我必須編輯我已裝箱的所有對象 – sein

回答

2

對不起,沒有這個教程,但是你可以通過類型這樣選擇孩子:

VAR形狀= layer.get(「行」); KineticJS中的

,形狀類型與DOM標籤相似。您可以按名稱選擇它們。

0

只需使用形狀的shapeType屬性。

下面是得到KineticJS線

var lines = G1.getChildren().filter(function(element) { 
    return element.shapeType === 'Line'; 
}); 
+0

我在想同樣的事情bug是否只有兒童的形狀類型? – thinklinux

+0

你是什麼意思,只有兒童的形狀類型?也許我錯誤地解釋了這個問題。 –

+0

我在我的答案中解釋它......也許我在這裏做出錯誤的假設,因爲我對動力學不太熟悉...... – thinklinux

1

數組所以@Grant蒂默曼示例將工作的例子,但我不知道那孩子,你只能有形狀所以在這裏我建議你做:

var lines = G1.getChildren().filter(function(element) { 
    return element instanceof Kinetic.Line; 
    }); 

我不知道kinetic很好,這就是爲什麼我做出這個假設。