mirror of
https://github.com/konvajs/konva.git
synced 2025-06-28 01:57:14 +08:00
enhanced setAttrs() logic to allow custom node properties and functions
This commit is contained in:
parent
508bfb7a9b
commit
70df77f9fa
35
dist/kinetic-core.js
vendored
35
dist/kinetic-core.js
vendored
@ -140,6 +140,12 @@ Kinetic.GlobalObject = {
|
||||
else {
|
||||
this.frame.lastTime = 0;
|
||||
}
|
||||
},
|
||||
_isElement: function(obj) {
|
||||
return !!(obj && obj.nodeType == 1);
|
||||
},
|
||||
_isFunction: function(obj) {
|
||||
return !!(obj && obj.constructor && obj.call && obj.apply);
|
||||
}
|
||||
};
|
||||
|
||||
@ -272,10 +278,23 @@ Kinetic.Node.prototype = {
|
||||
* @param {Object} config
|
||||
*/
|
||||
setAttrs: function(config) {
|
||||
var go = Kinetic.GlobalObject;
|
||||
// set properties from config
|
||||
if(config) {
|
||||
for(var key in config) {
|
||||
var val = config[key];
|
||||
|
||||
/*
|
||||
* add functions, DOM elements, and images
|
||||
* directly to the node
|
||||
*/
|
||||
if(go._isFunction(val) || go._isElement(val)) {
|
||||
this[key] = val;
|
||||
}
|
||||
/*
|
||||
* add all other object types to attrs object
|
||||
*/
|
||||
else {
|
||||
// handle special keys
|
||||
switch (key) {
|
||||
/*
|
||||
@ -324,21 +343,13 @@ Kinetic.Node.prototype = {
|
||||
this.attrs[key].height = val.height;
|
||||
}
|
||||
break;
|
||||
/*
|
||||
* config properties that we don't want in attrs
|
||||
*/
|
||||
case 'drawFunc':
|
||||
break;
|
||||
case 'image':
|
||||
break;
|
||||
case 'container':
|
||||
break;
|
||||
default:
|
||||
this.attrs[key] = config[key];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* determine if shape is visible or not
|
||||
@ -2167,9 +2178,6 @@ Kinetic.Shape = function(config) {
|
||||
this.attrs.lineJoin = undefined;
|
||||
this.attrs.detectionType = 'path';
|
||||
|
||||
// special
|
||||
this.drawFunc = config.drawFunc;
|
||||
|
||||
this.data = [];
|
||||
this.nodeType = 'Shape';
|
||||
|
||||
@ -2563,9 +2571,6 @@ Kinetic.Image = function(config) {
|
||||
height: undefined
|
||||
};
|
||||
|
||||
// special
|
||||
this.image = config.image;
|
||||
|
||||
this.shapeType = "Image";
|
||||
config.drawFunc = function() {
|
||||
if(this.image !== undefined) {
|
||||
|
@ -112,6 +112,12 @@ Kinetic.GlobalObject = {
|
||||
else {
|
||||
this.frame.lastTime = 0;
|
||||
}
|
||||
},
|
||||
_isElement: function(obj) {
|
||||
return !!(obj && obj.nodeType == 1);
|
||||
},
|
||||
_isFunction: function(obj) {
|
||||
return !!(obj && obj.constructor && obj.call && obj.apply);
|
||||
}
|
||||
};
|
||||
|
||||
|
23
src/Node.js
23
src/Node.js
@ -120,10 +120,23 @@ Kinetic.Node.prototype = {
|
||||
* @param {Object} config
|
||||
*/
|
||||
setAttrs: function(config) {
|
||||
var go = Kinetic.GlobalObject;
|
||||
// set properties from config
|
||||
if(config) {
|
||||
for(var key in config) {
|
||||
var val = config[key];
|
||||
|
||||
/*
|
||||
* add functions, DOM elements, and images
|
||||
* directly to the node
|
||||
*/
|
||||
if(go._isFunction(val) || go._isElement(val)) {
|
||||
this[key] = val;
|
||||
}
|
||||
/*
|
||||
* add all other object types to attrs object
|
||||
*/
|
||||
else {
|
||||
// handle special keys
|
||||
switch (key) {
|
||||
/*
|
||||
@ -172,21 +185,13 @@ Kinetic.Node.prototype = {
|
||||
this.attrs[key].height = val.height;
|
||||
}
|
||||
break;
|
||||
/*
|
||||
* config properties that we don't want in attrs
|
||||
*/
|
||||
case 'drawFunc':
|
||||
break;
|
||||
case 'image':
|
||||
break;
|
||||
case 'container':
|
||||
break;
|
||||
default:
|
||||
this.attrs[key] = config[key];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* determine if shape is visible or not
|
||||
|
@ -26,9 +26,6 @@ Kinetic.Shape = function(config) {
|
||||
this.attrs.lineJoin = undefined;
|
||||
this.attrs.detectionType = 'path';
|
||||
|
||||
// special
|
||||
this.drawFunc = config.drawFunc;
|
||||
|
||||
this.data = [];
|
||||
this.nodeType = 'Shape';
|
||||
|
||||
|
@ -19,9 +19,6 @@ Kinetic.Image = function(config) {
|
||||
height: undefined
|
||||
};
|
||||
|
||||
// special
|
||||
this.image = config.image;
|
||||
|
||||
this.shapeType = "Image";
|
||||
config.drawFunc = function() {
|
||||
if(this.image !== undefined) {
|
||||
|
Loading…
Reference in New Issue
Block a user