我有以下问题:我创建了两个不同的自定义对象,包括一些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之后,它们在它们之间以及对象之间是唯一的,但我不认为这是正确的行为。
答案 0 :(得分:1)
id
的每个Node
必须是唯一的。尝试使用deffirent id
。这是由KineticJS设计的。如果您不需要唯一值,则可以使用name
属性。