Javascript 如何在Kineticjs文本onclick上添加Kineticjs形状圆?

Javascript 如何在Kineticjs文本onclick上添加Kineticjs形状圆?,javascript,kineticjs,Javascript,Kineticjs,我想能够点击var textradie text“Show radie”,然后在组[index]中添加两个圆;和组别[index].add(带圆圈);。我正在我的组别组别[index]上添加两个圆圈。 我所有的jsonObjects[i].radie==false,所以我不知道为什么kinGroups[index]中只有一个对象有两个圆。我的三个物体都应该有两个圆,但只有一个物体有两个圆 var textradius = new Kinetic.Text({ x: 1000,

我想能够点击var textradie text“Show radie”,然后在组[index]中添加两个圆;和组别[index].add(带圆圈);。我正在我的组别组别[index]上添加两个圆圈。 我所有的jsonObjects[i].radie==false,所以我不知道为什么kinGroups[index]中只有一个对象有两个圆。我的三个物体都应该有两个圆,但只有一个物体有两个圆

var textradius = new Kinetic.Text({

    x: 1000,
    y: 500,
    fontFamily: 'Calibri',
    fontSize: 18,
    text: 'Show radius',
    fill: 'black'
});

kinGroups[index].add(textradie);

textradius.on('click', function() {

    for(i=0; i<jsonObjects.length; i++) {

        console.log("testing");

        if(kinGroups[index].getName() == jsonObjects[i].name) {

            if(jsonObjects[i].radie == false) {

                    kinGroups[index].add(circle);
                    kinGroups[index].add(circlered);
            }
        }
    }
});
var textradius=新动能.Text({
x:1000,
y:500,
fontFamily:“Calibri”,
尺码:18,
文本:“显示半径”,
填充:“黑色”
});
组别[index].add(textradie);
textradius.on('click',function()){

对于(i=0;i您必须向组中添加新的圆形和圆形对象

可以使用clone()方法执行以下操作:

kinGroups[index].add(circle.clone());
kinGroups[index].add(circlered.clone());
[添加:示例代码]

演示:

假设您有:

  • 一组
  • 该组中的文本元素。该文本元素名为“一”
  • 该组中的其他元素。其他一些元素被命名为“一”
如果您单击名为“一”的文本,以下是如何围绕其他也命名为“一”的元素绘制一个双圆圈

//定义一个可以克隆的圆
var循环=新的动力学循环({
笔画:“黑色”,
冲程宽度:2,
});
//获取与单击的文本同名的所有子项
var children=group.find(“.”+text.getName());
//迭代这些子项并添加克隆圆

对于(var i=0;i@markeE您好!谢谢,但是您的代码并没有解决问题,它仍然显示圆圈,并且只围绕一个对象而不是三个对象进行了圆圈。使用您提供的小代码很难准确地知道您需要什么,但是我在我的答案中添加了一个示例,可以让组中所有的子对象都使用与clic相同的名称在选定的孩子周围画两个圆圈。干杯!
// define a circle that can be cloned
var circle=new Kinetic.Circle({
    stroke: 'black',
    strokeWidth: 2,
});

// get all children with the same name as the clicked text

var children=group.find("."+text.getName());

// iterate those children and add cloned circles

for(var i=0;i<children.length;i++){


    // get the x,y of the other elements with the same name as the text

    var child=children[i];
    var x=child.getX();
    var y=child.getY();

    // add cloned circles around those other elements

    var red =circle.clone({x:x,y:y,radius:10,stroke:"red"});
    var blue=circle.clone({x:x,y:y,radius:15,stroke:"blue"});
    text.group.add(red);
    text.group.add(blue);

}
layer.draw();