mirror of
https://github.com/konvajs/konva.git
synced 2025-06-28 02:21:20 +08:00
- Added check for child.isListening in _traverseChildren() to handle case when a node overlaps another and you don't want to handle events for the topmost node.
- Added support for event.offsetX/offsetY in _setMousePosition to work around a Kinetic bug observed in Windows 8/Internet Explorer 10 - Added MIME type support to toDataURL() so that additional image formats can be generated in accordance to the spec
This commit is contained in:
parent
afad713df3
commit
9d44834148
40
src/Stage.js
40
src/Stage.js
@ -162,10 +162,14 @@ Kinetic.Stage.prototype = {
|
||||
}
|
||||
},
|
||||
/**
|
||||
* creates a composite data URL and passes it to a callback
|
||||
* Creates a composite data URL and passes it to a callback. If MIME type is not
|
||||
* specified, then "image/png" will result. For "image/jpeg", specify a quality
|
||||
* level as arg2 (range 0.0 - 1.0)
|
||||
* @param {function} callback
|
||||
* @param {String} mimeType (optional)
|
||||
* @param {Number} arg2 (optional)
|
||||
*/
|
||||
toDataURL: function(callback) {
|
||||
toDataURL: function(callback, mimeType, arg2) {
|
||||
var bufferLayer = this.bufferLayer;
|
||||
var bufferContext = bufferLayer.getContext();
|
||||
var layers = this.children;
|
||||
@ -180,7 +184,7 @@ Kinetic.Stage.prototype = {
|
||||
addLayer(n);
|
||||
}
|
||||
else {
|
||||
callback(bufferLayer.getCanvas().toDataURL());
|
||||
callback(bufferLayer.getCanvas().toDataURL(mimeType, arg2));
|
||||
}
|
||||
};
|
||||
imageObj.src = dataURL;
|
||||
@ -417,18 +421,20 @@ Kinetic.Stage.prototype = {
|
||||
// propapgate backwards through children
|
||||
for(var i = children.length - 1; i >= 0; i--) {
|
||||
var child = children[i];
|
||||
if(child.className === 'Shape') {
|
||||
var exit = this._detectEvent(child, evt);
|
||||
if(exit) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var exit = this._traverseChildren(child, evt);
|
||||
if(exit) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (child.isListening) {
|
||||
if(child.className === 'Shape') {
|
||||
var exit = this._detectEvent(child, evt);
|
||||
if(exit) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var exit = this._traverseChildren(child, evt);
|
||||
if(exit) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
@ -533,8 +539,8 @@ Kinetic.Stage.prototype = {
|
||||
* @param {Event} evt
|
||||
*/
|
||||
_setMousePosition: function(evt) {
|
||||
var mouseX = evt.clientX - this._getContainerPosition().left + window.pageXOffset;
|
||||
var mouseY = evt.clientY - this._getContainerPosition().top + window.pageYOffset;
|
||||
var mouseX = evt.offsetX || (evt.clientX - this._getContainerPosition().left + window.pageXOffset);
|
||||
var mouseY = evt.offsetY || (evt.clientY - this._getContainerPosition().top + window.pageYOffset);
|
||||
this.mousePos = {
|
||||
x: mouseX,
|
||||
y: mouseY
|
||||
|
Loading…
Reference in New Issue
Block a user