mirror of
https://github.com/konvajs/konva.git
synced 2025-04-05 20:48:28 +08:00
dynamic drag layer setup now does deep copy of Groups and Layers when reconstructing ancestors
This commit is contained in:
parent
1bcdd15f45
commit
79fecd2c13
@ -18,22 +18,12 @@
|
|||||||
// re-construct node tree
|
// re-construct node tree
|
||||||
no._eachAncestorReverse(function(node) {
|
no._eachAncestorReverse(function(node) {
|
||||||
if(node.nodeType === 'Layer') {
|
if(node.nodeType === 'Layer') {
|
||||||
stage.dragLayer.setAttrs({
|
stage.dragLayer.setAttrs(node.getAttrs());
|
||||||
x: node.getX(),
|
|
||||||
y: node.getY(),
|
|
||||||
scale: node.getScale(),
|
|
||||||
rotation: node.getRotation()
|
|
||||||
});
|
|
||||||
lastContainer = stage.dragLayer;
|
lastContainer = stage.dragLayer;
|
||||||
stage.add(stage.dragLayer);
|
stage.add(stage.dragLayer);
|
||||||
}
|
}
|
||||||
else if(node.nodeType === 'Group') {
|
else if(node.nodeType === 'Group') {
|
||||||
group = new Kinetic.Group({
|
group = new Kinetic.Group(node.getAttrs());
|
||||||
x: node.getX(),
|
|
||||||
y: node.getY(),
|
|
||||||
scale: node.getScale(),
|
|
||||||
rotation: node.getRotation()
|
|
||||||
});
|
|
||||||
lastContainer.add(group);
|
lastContainer.add(group);
|
||||||
lastContainer = group;
|
lastContainer = group;
|
||||||
}
|
}
|
||||||
|
@ -657,9 +657,7 @@
|
|||||||
var classType = this.shapeType || this.nodeType;
|
var classType = this.shapeType || this.nodeType;
|
||||||
var node = new Kinetic[classType](this.attrs);
|
var node = new Kinetic[classType](this.attrs);
|
||||||
|
|
||||||
/*
|
// copy over user listeners
|
||||||
* copy over user listeners
|
|
||||||
*/
|
|
||||||
for(var key in this.eventListeners) {
|
for(var key in this.eventListeners) {
|
||||||
var allListeners = this.eventListeners[key];
|
var allListeners = this.eventListeners[key];
|
||||||
var len = allListeners.length;
|
var len = allListeners.length;
|
||||||
|
@ -912,14 +912,16 @@ Test.Modules.DRAG_AND_DROP = {
|
|||||||
|
|
||||||
showHit(layer)
|
showHit(layer)
|
||||||
},
|
},
|
||||||
'draggable true false': function(containerId) {
|
'draggable true': function(containerId) {
|
||||||
var stage = new Kinetic.Stage({
|
var stage = new Kinetic.Stage({
|
||||||
container: containerId,
|
container: containerId,
|
||||||
width: 578,
|
width: 578,
|
||||||
height: 200
|
height: 200
|
||||||
});
|
});
|
||||||
var layer = new Kinetic.Layer();
|
var layer = new Kinetic.Layer({
|
||||||
var Circle = new Kinetic.Circle({
|
id: 'myLayer'
|
||||||
|
});
|
||||||
|
var circle = new Kinetic.Circle({
|
||||||
x: stage.getWidth() / 2,
|
x: stage.getWidth() / 2,
|
||||||
y: stage.getHeight() / 2,
|
y: stage.getHeight() / 2,
|
||||||
radius: 70,
|
radius: 70,
|
||||||
@ -928,12 +930,15 @@ Test.Modules.DRAG_AND_DROP = {
|
|||||||
strokeWidth: 4
|
strokeWidth: 4
|
||||||
});
|
});
|
||||||
|
|
||||||
Circle.setDraggable(true);
|
circle.setDraggable(true);
|
||||||
|
|
||||||
layer.add(Circle);
|
layer.add(circle);
|
||||||
stage.add(layer);
|
stage.add(layer);
|
||||||
|
|
||||||
|
circle.on('dragmove', function() {
|
||||||
|
console.log(this.getLayer().getId());
|
||||||
|
});
|
||||||
|
|
||||||
Circle.setDraggable(false);
|
|
||||||
},
|
},
|
||||||
'scale and rotate stage after add layer then drag and drop shape': function(containerId) {
|
'scale and rotate stage after add layer then drag and drop shape': function(containerId) {
|
||||||
var stage = new Kinetic.Stage({
|
var stage = new Kinetic.Stage({
|
||||||
|
Loading…
Reference in New Issue
Block a user