var stage = new Kinetic.Stage({
container: 'container',
width: 500,
height: 500,
});
var layer = new Kinetic.Layer();
var selectedGroup = new Kinetic.Group({
draggable: true,
});
var circle = new Kinetic.Circle({
x: 10,
y: 10,
fill: 'red',
radius: 10,
});
circle.on('dblclick', function () {
console.log('x: ' + circle.getX() + ' y: ' + circle.getY());
});
selectedGroup.add(circle);
layer.add(selectedGroup);
stage.add(layer);
layer.draw();
为什么职位不变?难道我做错了什么?还是一个bug?
我注意到当我将圆圈更改为可拖动时,它的坐标会发生变化,但是我在一个组中有2个圆圈的问题,我希望能够同时移动它们并拥有它们的x和y改变。
答案 0 :(得分:0)
圈子的位置没有变化的原因是getX
和getY
相对于父元素。父元素是selectedGroup
可拖动的。有两种方法可以改变圆圈的位置。
使用圆圈上的getAbsolutePosition
功能获取其位置:
pos = circle.getAbsolutePosition();
console.log('position=(' + pos.x + ', ' + pos.y + ')');
使用可拖动的位置和圆的偏移量:
console.log('x: ' + (selectedGroup.getX() + circle.getX()) + ' y: ' + (selectedGroup.getY() + circle.getY()));
答案 1 :(得分:0)
添加到@ thescottknight的好答案:
您可以使用myObject.moveTo(newContainer)
因此,您可以将selectedGroup
中的circle2移动到layer
上的相同坐标位置,如下所示:
circle2.on('dblclick', function () {
circle2.setX(selectedGroup.getX()+circle2.getX());
circle2.setY(selectedGroup.getY()+circle2.getY());
circle2.moveTo(layer);
layer.draw();
});