如何获得具有相同类型Kineticjs的儿童?

时间:2013-05-14 20:32:06

标签: javascript html html5 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

3 个答案:

答案 0 :(得分:2)

抱歉没有关于此的教程,但您可以按类型选择子项:

var shapes = layer.get(' Line');

在KineticJS中,形状类型与DOM标签类似。您可以按名称选择它们。

答案 1 :(得分:1)

所以@Grant Timmerman的例子会起作用,但我不确定对于孩子们来说,你只能拥有形状,所以我建议你这样做:

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

我不太了解动力学,这就是我做出这个假设的原因。

答案 2 :(得分:0)

只需使用Shape的shapeType属性。

以下是获取KineticJS Lines数组的示例

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