1

我在我的代码中遇到了 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

4

3 回答 3

2

抱歉没有这方面的教程,但您可以按以下类型选择孩子:

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

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

于 2013-05-17T17:01:14.243 回答
1

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

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

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

于 2013-05-14T20:56:40.533 回答
0

只需使用 Shape 的shapeType属性。

这是一个获取 KineticJS Lines 数组的示例

var lines = G1.getChildren().filter(function(element) {
    return element.shapeType === 'Line';
});
于 2013-05-14T20:49:27.783 回答