mirror of
https://github.com/konvajs/konva.git
synced 2025-11-18 17:21:36 +08:00
changed tempNodes array into a hash to improve performance
This commit is contained in:
28
dist/kinetic-core.js
vendored
28
dist/kinetic-core.js
vendored
@@ -40,7 +40,7 @@ Kinetic.Global = {
|
||||
BUBBLE_WHITELIST: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout', 'click', 'dblclick', 'touchstart', 'touchmove', 'touchend', 'tap', 'dbltap', 'dragstart', 'dragmove', 'dragend'],
|
||||
stages: [],
|
||||
idCounter: 0,
|
||||
tempNodes: [],
|
||||
tempNodes: {},
|
||||
maxDragTimeInterval: 20,
|
||||
drag: {
|
||||
moving: false,
|
||||
@@ -57,15 +57,20 @@ Kinetic.Global = {
|
||||
},
|
||||
_pullNodes: function(stage) {
|
||||
var tempNodes = this.tempNodes;
|
||||
for(var n = 0; n < tempNodes.length; n++) {
|
||||
var node = tempNodes[n];
|
||||
for(var key in tempNodes) {
|
||||
var node = tempNodes[key];
|
||||
if(node.getStage() !== undefined && node.getStage()._id === stage._id) {
|
||||
stage._addId(node);
|
||||
stage._addName(node);
|
||||
this.tempNodes.splice(n, 1);
|
||||
n -= 1;
|
||||
this._removeTempNode(node);
|
||||
}
|
||||
}
|
||||
},
|
||||
_addTempNode: function(node) {
|
||||
this.tempNodes[node._id] = node;
|
||||
},
|
||||
_removeTempNode: function(node) {
|
||||
delete this.tempNodes[node._id];
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2525,8 +2530,7 @@ Kinetic.Container = Kinetic.Node.extend({
|
||||
var stage = child.getStage();
|
||||
|
||||
if(!stage) {
|
||||
var go = Kinetic.Global;
|
||||
go.tempNodes.push(child);
|
||||
Kinetic.Global._addTempNode(child);
|
||||
}
|
||||
else {
|
||||
stage._addId(child);
|
||||
@@ -2562,15 +2566,7 @@ Kinetic.Container = Kinetic.Node.extend({
|
||||
stage._removeName(child.getName(), child._id);
|
||||
}
|
||||
|
||||
var go = Kinetic.Global;
|
||||
for(var n = 0; n < go.tempNodes.length; n++) {
|
||||
var node = go.tempNodes[n];
|
||||
if(node._id === child._id) {
|
||||
go.tempNodes.splice(n, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Kinetic.Global._removeTempNode(child);
|
||||
this.children.splice(child.index, 1);
|
||||
this._setChildrenIndices();
|
||||
|
||||
|
||||
4
dist/kinetic-core.min.js
vendored
4
dist/kinetic-core.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -68,8 +68,7 @@ Kinetic.Container = Kinetic.Node.extend({
|
||||
var stage = child.getStage();
|
||||
|
||||
if(!stage) {
|
||||
var go = Kinetic.Global;
|
||||
go.tempNodes.push(child);
|
||||
Kinetic.Global._addTempNode(child);
|
||||
}
|
||||
else {
|
||||
stage._addId(child);
|
||||
@@ -105,15 +104,7 @@ Kinetic.Container = Kinetic.Node.extend({
|
||||
stage._removeName(child.getName(), child._id);
|
||||
}
|
||||
|
||||
var go = Kinetic.Global;
|
||||
for(var n = 0; n < go.tempNodes.length; n++) {
|
||||
var node = go.tempNodes[n];
|
||||
if(node._id === child._id) {
|
||||
go.tempNodes.splice(n, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Kinetic.Global._removeTempNode(child);
|
||||
this.children.splice(child.index, 1);
|
||||
this._setChildrenIndices();
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Kinetic.Global = {
|
||||
BUBBLE_WHITELIST: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout', 'click', 'dblclick', 'touchstart', 'touchmove', 'touchend', 'tap', 'dbltap', 'dragstart', 'dragmove', 'dragend'],
|
||||
stages: [],
|
||||
idCounter: 0,
|
||||
tempNodes: [],
|
||||
tempNodes: {},
|
||||
maxDragTimeInterval: 20,
|
||||
drag: {
|
||||
moving: false,
|
||||
@@ -29,14 +29,19 @@ Kinetic.Global = {
|
||||
},
|
||||
_pullNodes: function(stage) {
|
||||
var tempNodes = this.tempNodes;
|
||||
for(var n = 0; n < tempNodes.length; n++) {
|
||||
var node = tempNodes[n];
|
||||
for(var key in tempNodes) {
|
||||
var node = tempNodes[key];
|
||||
if(node.getStage() !== undefined && node.getStage()._id === stage._id) {
|
||||
stage._addId(node);
|
||||
stage._addName(node);
|
||||
this.tempNodes.splice(n, 1);
|
||||
n -= 1;
|
||||
this._removeTempNode(node);
|
||||
}
|
||||
}
|
||||
},
|
||||
_addTempNode: function(node) {
|
||||
this.tempNodes[node._id] = node;
|
||||
},
|
||||
_removeTempNode: function(node) {
|
||||
delete this.tempNodes[node._id];
|
||||
}
|
||||
};
|
||||
|
||||
@@ -734,7 +734,7 @@ Test.prototype.tests = {
|
||||
|
||||
var go = Kinetic.Global;
|
||||
|
||||
test(go.tempNodes.length === 0, 'shouldn\'t be nodes in the tempNdoes array');
|
||||
test(go.tempNodes[circle._id] === undefined, 'circle shouldn\'t be in the temp nodes hash');
|
||||
|
||||
layer.add(circle);
|
||||
|
||||
@@ -742,11 +742,12 @@ Test.prototype.tests = {
|
||||
|
||||
test(node === undefined, 'node should be undefined');
|
||||
|
||||
test(go.tempNodes.length === 1, 'tempNodes array should have one node');
|
||||
test(go.tempNodes[circle._id].attrs.id === 'myCircle', 'circle should be in temp nodes');
|
||||
|
||||
layer.remove(circle);
|
||||
|
||||
test(go.tempNodes.length === 0, 'shouldn\'t be nodes in the tempNdoes array');
|
||||
test(go.tempNodes[circle._id] === undefined, 'circle shouldn\'t be in the temp nodes hash');
|
||||
|
||||
|
||||
},
|
||||
'CONTAINER - remove layer with shape': function(containerId) {
|
||||
|
||||
Reference in New Issue
Block a user