0
我使用KineticJS在中间绘制垂直线和水平线以及一个圆。我已经分组的垂直线和圆,但我想移动的圆圈与水平线为好,这里是我的脚本:KineticJS在两个组之间共享一个对象
var stage1 = new Kinetic.Stage({
container: 'container',
width: 1024,
height: 1024
});
var blayer1 = new Kinetic.Layer();
var bgroup1 = new Kinetic.Group({
draggable: true,
dragBoundFunc: function (pos) {
return {
x: pos.x,
y: this.getAbsolutePosition().y
}
}
});
var BlueLine1 = new Kinetic.Line({
points: [512, 0, 512, 1024],
stroke: '#0080c0',
strokeWidth: 2,
lineCap: 'round',
lineJoin: 'round'
});
var circle = new Kinetic.Circle({
x: stage1.getWidth()/2,
y: stage1.getHeight()/2,
radius: 140,
stroke: '#00ffff',
strokeWidth: 2
});
bgroup1.add(circle);
bgroup1.add(BlueLine1);
blayer1.add(bgroup1);
stage1.add(blayer1);
blayer1.draw();
var glayer1 = new Kinetic.Layer();
var ggroup1 = new Kinetic.Group({
draggable: true,
dragBoundFunc: function (pos) {
return {
x: this.getAbsolutePosition().x,
y: pos.y
}
}
});
var GreenLine1 = new Kinetic.Line({
points: [0, 512, 1024, 512],
stroke: 'red',
strokeWidth: 2,
lineCap: 'round',
lineJoin: 'round'
});
ggroup1.add(GreenLine1);
glayer1.add(ggroup1);
stage1.add(glayer1);
glayer1.draw();
}
谢谢马克,这是你第二次帮我解答一个问题。它运作得非常棒,这个圈子回到舞台的中心,而不是在两条线被腐蚀的地方!再次感谢。 – hncl 2013-03-17 21:28:50
对不起,我忘了。你认为将圆的X和Y设置为stage1.getHeight/2可能是问题! – hncl 2013-03-17 21:37:52
是的,更改后将圆移到另一个组,也可能需要重新调整x/y。您只需在开始时重新调整一次,因为即使您稍后移动组,该线和圆的相对位置也应该相同。 ;) – markE 2013-03-17 21:42:38