mirror of
https://github.com/konvajs/konva.git
synced 2025-11-18 17:21:36 +08:00
attr change events are now triggered for any root attr so long as the attr is set with the setAttrs method
This commit is contained in:
20
dist/kinetic-core.js
vendored
20
dist/kinetic-core.js
vendored
@@ -3,7 +3,7 @@
|
||||
* http://www.kineticjs.com/
|
||||
* Copyright 2012, Eric Rowell
|
||||
* Licensed under the MIT or GPL Version 2 licenses.
|
||||
* Date: Jun 08 2012
|
||||
* Date: Jun 09 2012
|
||||
*
|
||||
* Copyright (C) 2011 - 2012 by Eric Rowell
|
||||
*
|
||||
@@ -535,12 +535,15 @@ Kinetic.Node.prototype = {
|
||||
*/
|
||||
case 'draggable':
|
||||
that.draggable(c[key]);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
case 'listening':
|
||||
that.listen(c[key]);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
case 'rotationDeg':
|
||||
that._setAttr(obj, 'rotation', c[key] * Math.PI / 180);
|
||||
that._fireChangeEvent('rotation');
|
||||
break;
|
||||
/*
|
||||
* config objects
|
||||
@@ -549,6 +552,7 @@ Kinetic.Node.prototype = {
|
||||
var pos = go._getXY(val);
|
||||
that._setAttr(obj[key], 'x', pos.x);
|
||||
that._setAttr(obj[key], 'y', pos.y);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
/*
|
||||
* includes:
|
||||
@@ -559,26 +563,30 @@ Kinetic.Node.prototype = {
|
||||
var pos = go._getXY(val);
|
||||
that._setAttr(obj[key], 'x', pos.x);
|
||||
that._setAttr(obj[key], 'y', pos.y);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
case 'scale':
|
||||
var pos = go._getXY(val);
|
||||
that._setAttr(obj[key], 'x', pos.x);
|
||||
that._setAttr(obj[key], 'y', pos.y);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
case 'points':
|
||||
that._setAttr(obj, key, go._getPoints(val));
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
case 'crop':
|
||||
var pos = go._getXY(val);
|
||||
var size = go._getSize(val);
|
||||
|
||||
that._setAttr(obj[key], 'x', pos.x);
|
||||
that._setAttr(obj[key], 'y', pos.y);
|
||||
that._setAttr(obj[key], 'width', size.width);
|
||||
that._setAttr(obj[key], 'height', size.height);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
default:
|
||||
that._setAttr(obj, key, c[key]);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1167,12 +1175,14 @@ Kinetic.Node.prototype = {
|
||||
|
||||
return m;
|
||||
},
|
||||
_fireChangeEvent: function(attr) {
|
||||
if(this.getStage() !== undefined) {
|
||||
this._handleEvent(attr + 'Change', {});
|
||||
}
|
||||
},
|
||||
_setAttr: function(obj, attr, val) {
|
||||
if(val !== undefined) {
|
||||
obj[attr] = val;
|
||||
if(this.getStage() !== undefined) {
|
||||
this._handleEvent(attr + 'Change', {});
|
||||
}
|
||||
}
|
||||
},
|
||||
_listenDrag: function() {
|
||||
|
||||
6
dist/kinetic-core.min.js
vendored
6
dist/kinetic-core.min.js
vendored
File diff suppressed because one or more lines are too long
18
src/Node.js
18
src/Node.js
@@ -180,12 +180,15 @@ Kinetic.Node.prototype = {
|
||||
*/
|
||||
case 'draggable':
|
||||
that.draggable(c[key]);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
case 'listening':
|
||||
that.listen(c[key]);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
case 'rotationDeg':
|
||||
that._setAttr(obj, 'rotation', c[key] * Math.PI / 180);
|
||||
that._fireChangeEvent('rotation');
|
||||
break;
|
||||
/*
|
||||
* config objects
|
||||
@@ -194,6 +197,7 @@ Kinetic.Node.prototype = {
|
||||
var pos = go._getXY(val);
|
||||
that._setAttr(obj[key], 'x', pos.x);
|
||||
that._setAttr(obj[key], 'y', pos.y);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
/*
|
||||
* includes:
|
||||
@@ -204,26 +208,30 @@ Kinetic.Node.prototype = {
|
||||
var pos = go._getXY(val);
|
||||
that._setAttr(obj[key], 'x', pos.x);
|
||||
that._setAttr(obj[key], 'y', pos.y);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
case 'scale':
|
||||
var pos = go._getXY(val);
|
||||
that._setAttr(obj[key], 'x', pos.x);
|
||||
that._setAttr(obj[key], 'y', pos.y);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
case 'points':
|
||||
that._setAttr(obj, key, go._getPoints(val));
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
case 'crop':
|
||||
var pos = go._getXY(val);
|
||||
var size = go._getSize(val);
|
||||
|
||||
that._setAttr(obj[key], 'x', pos.x);
|
||||
that._setAttr(obj[key], 'y', pos.y);
|
||||
that._setAttr(obj[key], 'width', size.width);
|
||||
that._setAttr(obj[key], 'height', size.height);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
default:
|
||||
that._setAttr(obj, key, c[key]);
|
||||
that._fireChangeEvent(key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -812,12 +820,14 @@ Kinetic.Node.prototype = {
|
||||
|
||||
return m;
|
||||
},
|
||||
_fireChangeEvent: function(attr) {
|
||||
if(this.getStage() !== undefined) {
|
||||
this._handleEvent(attr + 'Change', {});
|
||||
}
|
||||
},
|
||||
_setAttr: function(obj, attr, val) {
|
||||
if(val !== undefined) {
|
||||
obj[attr] = val;
|
||||
if(this.getStage() !== undefined) {
|
||||
this._handleEvent(attr + 'Change', {});
|
||||
}
|
||||
}
|
||||
},
|
||||
_listenDrag: function() {
|
||||
|
||||
@@ -1800,7 +1800,6 @@ Test.prototype.tests = {
|
||||
/*
|
||||
* test cropping setter
|
||||
*/
|
||||
|
||||
darth.setCrop(0, 1, 2, 3);
|
||||
crop = darth.getCrop();
|
||||
test(crop.x === 0, 'crop x should be 0');
|
||||
@@ -2923,15 +2922,15 @@ Test.prototype.tests = {
|
||||
layer.add(rect);
|
||||
stage.add(layer);
|
||||
|
||||
var widthChangeTriggered = false;
|
||||
var triggered = false;
|
||||
|
||||
rect.on('widthChange', function() {
|
||||
widthChangeTriggered = true;
|
||||
triggered = true;
|
||||
});
|
||||
|
||||
rect.setSize(200);
|
||||
|
||||
test(widthChangeTriggered, 'changing rect size should have triggered on attr change');
|
||||
rect.setSize(210);
|
||||
|
||||
test(triggered, 'width change event not triggered');
|
||||
},
|
||||
'NODE - test setting shadow offset': function(containerId) {
|
||||
var stage = new Kinetic.Stage({
|
||||
|
||||
Reference in New Issue
Block a user