layer.find虽然存在,却不会通过id返回kineticjs对象

时间:2014-10-21 13:52:33

标签: javascript kineticjs

我有以下问题:我创建了两个不同的自定义对象,包括一些kineticjs对象。在他们每个人我有一些Kinetijs线。线条的id在自定义对象内部是不同的,但可以是两个不同的mycustom对象之间。含义

 mycustomobj1 hass lines with id1, id2, id3, id4
 mycustomobj2 has also lines with id1, id2, id3, id4

每一行都放在一个组中,一个层上的组可以说是lineGroup和basicLayer 并且lineGroup中有许多行

我在mycustomobj1上执行以下操作

mycustomobj1.lineGroup.getChildren()

并返回此组中的所有行。其中一个与id1一致。但是当我做的时候

mycstomobj1.basicLayer.find("#id1");

我得到一个空数组。

有什么不对?

和示例代码。我从我的obect(lineGroup)

中提取了一行
lines.getChildren()[11]
Kinetic.Line 
    {nodeType: "Shape", 
    _fillFunc: function, 
    _strokeFunc: function, 
    _fillFuncHit: function, 
    _strokeFuncHit: function…}
    _cache: Object
    _fillFunc: function a(a){a.fill()}
    _fillFuncHit: function c(a){a.fill()}
    _filterUpToDate: 
    false_id: 47
    _strokeFunc: function b(a){a.stroke()}
    _strokeFuncHit: function d(a){a.stroke()}
    attrs: Object
        id: "red0"
        points: Array[48]
        sceneFunc: function (a){var b,c,d,e=this.getPoints(),f=e.length,g=this.getTension(),h=this.getClosed();if(a.beginPath(),a.moveTo(e[0],e[1]),0!==g&&f>4){for(b=this.getTensionPoints(),c=b.length,d=h?0:4,h||a.quadraticCurveTo(b[0],b[1],b[2],b[3]);c-2>d;)a.bezierCurveTo(b[d++],b[d++],b[d++],b[d++],b[d++],b[d++]);h||a.quadraticCurveTo(b[c-2],b[c-1],e[f-2],e[f-1])}else for(d=2;f>d;d+=2)a.lineTo(e[d],e[d+1]);h?(a.closePath(),a.fillStrokeShape(this)):a.strokeShape(this)}stroke: "red"strokeWidth: 2
    __proto__: Object
    className:"Line"
    colorKey: "#372306"
    eventListeners: Object
    index: 11
    nodeType: "Shape"
    parent: Kinetic.Group__proto__: Object

lines.find("#red0")
[]
编辑:改变id之后,它们在它们之间以及对象之间是唯一的,但我不认为这是正确的行为。

1 个答案:

答案 0 :(得分:1)

id的每个Node必须是唯一的。尝试使用deffirent id。这是由KineticJS设计的。如果您不需要唯一值,则可以使用name属性。