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