mirror of
https://github.com/konvajs/konva.git
synced 2025-12-17 18:01:15 +08:00
added new fire() method which fires synthetic events and custom events. Simulate() now simulates user events with event bubbling
This commit is contained in:
27
src/Node.js
27
src/Node.js
@@ -589,15 +589,25 @@ Kinetic.Node.prototype = {
|
||||
}
|
||||
},
|
||||
/**
|
||||
* simulate event
|
||||
* simulate event with event bubbling
|
||||
* @name simulate
|
||||
* @methodOf Kinetic.Node.prototype
|
||||
* @param {String} eventType
|
||||
* @param {Object} event attribute
|
||||
* @param {EventObject} evt event object
|
||||
*/
|
||||
simulate: function(eventType, evt) {
|
||||
this._handleEvent(eventType, evt || {});
|
||||
},
|
||||
/**
|
||||
* synthetically fire an event. The event object will not bubble up the Node tree. You can also pass in custom properties
|
||||
* @name fire
|
||||
* @methodOf Kinetic.Node.prototype
|
||||
* @param {String} eventType
|
||||
* @param {Object} obj optional object which can be used to pass parameters
|
||||
*/
|
||||
fire: function(eventType, obj) {
|
||||
this._executeHandlers(eventType, obj || {});
|
||||
},
|
||||
/**
|
||||
* get absolute transform of the node which takes into
|
||||
* account its parent transforms
|
||||
@@ -902,14 +912,11 @@ Kinetic.Node.prototype = {
|
||||
|
||||
if(okayToRun) {
|
||||
if(el[eventType]) {
|
||||
var events = el[eventType];
|
||||
for(var i = 0; i < events.length; i++) {
|
||||
events[i].handler.apply(this, [evt]);
|
||||
}
|
||||
this.fire(eventType, evt);
|
||||
}
|
||||
|
||||
// simulate event bubbling
|
||||
if(Kinetic.Global.BUBBLE_WHITELIST.indexOf(eventType) >= 0 && !evt.cancelBubble && this.parent) {
|
||||
if(!evt.cancelBubble && this.parent) {
|
||||
if(compareShape && compareShape.parent) {
|
||||
this._handleEvent.call(this.parent, eventType, evt, compareShape.parent);
|
||||
}
|
||||
@@ -919,6 +926,12 @@ Kinetic.Node.prototype = {
|
||||
}
|
||||
}
|
||||
},
|
||||
_executeHandlers: function(eventType, evt) {
|
||||
var events = this.eventListeners[eventType];
|
||||
for(var i = 0; i < events.length; i++) {
|
||||
events[i].handler.apply(this, [evt]);
|
||||
}
|
||||
},
|
||||
_shouldDraw: function(canvas) {
|
||||
return (this.isVisible() && (!canvas || canvas.name !== 'buffer' || this.getListening()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user