cleaned up intersects logic, and added more docs

This commit is contained in:
Eric Rowell 2012-07-14 18:41:34 -07:00
parent 864938ed33
commit 2629c1237c
4 changed files with 19 additions and 7 deletions

12
dist/kinetic-core.js vendored
View File

@ -3473,6 +3473,7 @@ Kinetic.Shape = Kinetic.Node.extend({
var pos = Kinetic.Type._getXY(Array.prototype.slice.call(arguments)); var pos = Kinetic.Type._getXY(Array.prototype.slice.call(arguments));
var stage = this.getStage(); var stage = this.getStage();
// path detection
if(this.attrs.detectionType === 'path') { if(this.attrs.detectionType === 'path') {
var pathLayer = stage.pathLayer; var pathLayer = stage.pathLayer;
var pathLayerContext = pathLayer.getContext(); var pathLayerContext = pathLayer.getContext();
@ -3481,11 +3482,16 @@ Kinetic.Shape = Kinetic.Node.extend({
return pathLayerContext.isPointInPath(pos.x, pos.y); return pathLayerContext.isPointInPath(pos.x, pos.y);
} }
else {
// pixel detection
if(this.imageData) {
var w = stage.attrs.width; var w = stage.attrs.width;
var alpha = this.imageData.data[((w * pos.y) + pos.x) * 4 + 3]; var alpha = this.imageData.data[((w * pos.y) + pos.x) * 4 + 3];
return (!!alpha); return (alpha);
} }
// default
return false;
}, },
_draw: function(layer) { _draw: function(layer) {
if(layer && this.attrs.drawFunc) { if(layer && this.attrs.drawFunc) {
@ -3815,7 +3821,7 @@ Kinetic.Node.addGettersSetters(Kinetic.Ellipse, ['radius']);
* @constructor * @constructor
* @augments Kinetic.Shape * @augments Kinetic.Shape
* @param {Object} config * @param {Object} config
* @param {ImageObject} config.image * @param {ImageObject|String|ImageData} config.image can be an image object, a data url string, or an image data object
* @param {Number} [config.width] * @param {Number} [config.width]
* @param {Number} [config.height] * @param {Number} [config.height]
* @param {Object} [config.crop] * @param {Object} [config.crop]

File diff suppressed because one or more lines are too long

View File

@ -306,6 +306,7 @@ Kinetic.Shape = Kinetic.Node.extend({
var pos = Kinetic.Type._getXY(Array.prototype.slice.call(arguments)); var pos = Kinetic.Type._getXY(Array.prototype.slice.call(arguments));
var stage = this.getStage(); var stage = this.getStage();
// path detection
if(this.attrs.detectionType === 'path') { if(this.attrs.detectionType === 'path') {
var pathLayer = stage.pathLayer; var pathLayer = stage.pathLayer;
var pathLayerContext = pathLayer.getContext(); var pathLayerContext = pathLayer.getContext();
@ -314,11 +315,16 @@ Kinetic.Shape = Kinetic.Node.extend({
return pathLayerContext.isPointInPath(pos.x, pos.y); return pathLayerContext.isPointInPath(pos.x, pos.y);
} }
else {
// pixel detection
if(this.imageData) {
var w = stage.attrs.width; var w = stage.attrs.width;
var alpha = this.imageData.data[((w * pos.y) + pos.x) * 4 + 3]; var alpha = this.imageData.data[((w * pos.y) + pos.x) * 4 + 3];
return (!!alpha); return (alpha);
} }
// default
return false;
}, },
_draw: function(layer) { _draw: function(layer) {
if(layer && this.attrs.drawFunc) { if(layer && this.attrs.drawFunc) {

View File

@ -6,7 +6,7 @@
* @constructor * @constructor
* @augments Kinetic.Shape * @augments Kinetic.Shape
* @param {Object} config * @param {Object} config
* @param {ImageObject} config.image * @param {ImageObject|String|ImageData} config.image can be an image object, a data url string, or an image data object
* @param {Number} [config.width] * @param {Number} [config.width]
* @param {Number} [config.height] * @param {Number} [config.height]
* @param {Object} [config.crop] * @param {Object} [config.crop]