stage clone has new container. fix #707

This commit is contained in:
Лаврёнов Антон
2014-03-07 22:51:26 +08:00
parent 452c99cb4e
commit d65201a12f
5 changed files with 53 additions and 6 deletions

View File

@@ -1183,13 +1183,18 @@
clone: function(obj) {
// instantiate new node
var className = this.getClassName(),
attrs = this.attrs,
attrs = Kinetic.Util.cloneObject(this.attrs),
key, allListeners, len, n, listener;
// filter black attrs
for (var i in CLONE_BLACK_LIST) {
var blockAttr = CLONE_BLACK_LIST[i];
delete attrs[blockAttr];
}
// apply attr overrides
for (key in obj) {
attrs[key] = obj[key];
}
var node = new Kinetic[className](attrs);
// copy over listeners
for(key in this.eventListeners) {
@@ -1210,9 +1215,6 @@
}
}
}
// apply attr overrides
node.setAttrs(obj);
return node;
},
/**

View File

@@ -145,6 +145,14 @@
}
return this;
},
clone: function(obj) {
if (!obj) {
obj = {};
}
obj.container = Kinetic.document.createElement(DIV);
return Kinetic.Container.prototype.clone.call(this, obj);
},
/**
* remove stage
* @method
@@ -634,7 +642,7 @@
throw 'Stage has not container. But container is required';
} else {
// automatically create element for jsdom in nodejs env
container = Kinetic.document.createElement(DIV);
container = Kinetic.document.createElement(DIV);
}
}
// clear content inside container

View File

@@ -557,7 +557,7 @@
var retObj = {};
for(var key in obj) {
if(this._isObject(obj[key])) {
retObj[key] = this._clone(obj[key]);
retObj[key] = this.cloneObject(obj[key]);
}
else {
retObj[key] = obj[key];