Javascript 对象如何存储在Kineticjs中的Kinetic.Layer中?

Javascript 对象如何存储在Kineticjs中的Kinetic.Layer中?,javascript,kineticjs,Javascript,Kineticjs,我目前正在创建一个三角形网格,使用一个for循环,在一个单独的数组中使用一组预先确定的坐标 像这样: function createTri(x, y, z, a) { var tri = new Kinetic.RegularPolygon({ id: a, x: x, y: y, sides: 3,

我目前正在创建一个三角形网格,使用一个for循环,在一个单独的数组中使用一组预先确定的坐标

像这样:

        function createTri(x, y, z, a) {
            var tri = new Kinetic.RegularPolygon({
                id: a,
                x: x,
                y: y,
                sides: 3,
                radius: 15,
                rotation: z,
                fillRed: 17,
                fillGreen: 17,
                fillBlue: 17,
                closed: true,
                shadowColor: '#5febff',
                shadowBlur: 5,
                shadowOpacity: 0.18
            });

            layer.add(tri);

        }

        for (var i = 0; i < pax.length; i++){
            for (var j = 0; j < pax[i].length; j++){
                createTri(pax[i][j][0],pax[i][j][1],pax[i][j][2],(i+'')+(j+''));
            };
        }
函数createTri(x,y,z,a){
var tri=新的动能调节多边形({
id:a,
x:x,
y:y,
双方:3,,
半径:15,
旋转:z,
菲尔瑞德:17,
菲尔格林:17,
蓝色:17,
关闭:是的,
阴影颜色:“#5febff”,
阴影模糊:5,
阴影不透明度:0.18
});
层。添加(tri);
}
对于(变量i=0;i
但是,当我试图从层容器返回特定id的
console.log()
时,我得到的只是代码而不是id号

我不完全确定我是把它称为动能错误,还是说它总体上是错误的

所以我想我需要知道通过id属性调用对象的正常方式是什么,或者如何从dynamic.Layer正确地调用它


编辑:为了解释,我试图调用它的方式在动能文档中定义为
node.find('selector'),因此,当尝试按id查找时,我尝试登录到控制台:
console.log(layer.find('#1674')但是,当我这样做时,控制台会记录一个原型对象以及所有可能的关联函数,而不是我试图调用的对象。

我怀疑问题的根源在于三角形对象的id不是您所期望的

您应该会看到这样的内容(在Chrome中):

你看到了吗

[each: function, toArray: function, _init: function, _clearCache: function, _getCache: function…]
这就是当我向层的
find
方法提供无效id时得到的结果


这里有一把小提琴来说明:

这正是我得到的。我的id Im设置应该是字符串而不是值。。。但我可能错了。我将字符串设置为
(i++“”)+(j++“”)
,这应该将其更改为字符串而不是值。此外,为了验证Im是否选择了有效的id,Im控制台会记录生成三角形时生成的所有id。所以我从我看到的中挑选了一个。图层对象的范围是什么?您是否已验证正在将形状添加到正在检查的节点(例如
node.getChildren().length
)中?您还可以在您的Kinetic stage对象上运行
find
,如果该对象位于您不期望的节点中,它应该返回该对象。另外,请注意id冲突,例如
i=1,j=11
i=11,j=1
。是的,我运行了一个
层.children.length
,得到了500多个。我假设这是正确的数字,但现在我可能需要实际计算可视画布上的每个三角形来确定。但是关于范围的问题。。。我不能完全肯定。这一点也很好,但我注意到id命名的结果是i=01,j=11或i=11,j=01,所以不会有太多问题。此外,我不确定在后台容器中搜索特定id如何才能找到节点的正确父节点?此外,如果有帮助的话,这里是我当前的项目github,您可以看到我当前的代码:@JSArrakis您是否尝试过
console.log(layer.getChildren()[0].getAttr('id')
[each: function, toArray: function, _init: function, _clearCache: function, _getCache: function…]