added new stage.getIntersects() method which allows you to obtain all the shapes that intersect a given point. Also enhanced all methods that require an x or y by allowing either two arguments to be passed in or an object to be passed in. Example foo(100, 50) or foo({x:100, y:50});

This commit is contained in:
Eric Rowell
2012-04-27 23:57:01 -07:00
parent 192681374d
commit 9fef9e54d9
7 changed files with 124 additions and 21 deletions

View File

@@ -118,6 +118,18 @@ Kinetic.GlobalObject = {
},
_isFunction: function(obj) {
return !!(obj && obj.constructor && obj.call && obj.apply);
},
_getPoint: function(arg) {
if(arg.length === 1) {
return arg[0];
}
else {
return {
x: arg[0],
y: arg[1]
}
}
}
};

View File

@@ -287,12 +287,12 @@ Kinetic.Node.prototype = {
},
/**
* set node position
* @param {Number} x
* @param {Number} y
* @param {Object} point
*/
setPosition: function(x, y) {
this.attrs.x = x;
this.attrs.y = y;
setPosition: function() {
var pos = Kinetic.GlobalObject._getPoint(arguments);
this.attrs.x = pos.x;
this.attrs.y = pos.y;
},
/**
* set node x position
@@ -353,7 +353,8 @@ Kinetic.Node.prototype = {
* @param {Object} pos object containing an x and
* y property
*/
setAbsolutePosition: function(pos) {
setAbsolutePosition: function() {
var pos = Kinetic.GlobalObject._getPoint(arguments);
/*
* save rotation and scale and
* then remove them from the transform

View File

@@ -173,7 +173,8 @@ Kinetic.Shape.prototype = {
/**
* determines if point is in the shape
*/
intersects: function(pos) {
intersects: function() {
var pos = Kinetic.GlobalObject._getPoint(arguments);
var stage = this.getStage();
if(this.attrs.detectionType === 'path') {

View File

@@ -351,11 +351,22 @@ Kinetic.Stage.prototype = {
return this.attrs.height;
},
/**
* get shapes in point
* get shapes that intersect a point
* @param {Object} point
*/
getShapesInPoint: function(pos) {
getIntersections: function() {
var pos = Kinetic.GlobalObject._getPoint(arguments);
var arr = [];
var shapes = this.get('Shape');
for(var n = 0; n < shapes.length; n++) {
var shape = shapes[n];
if(shape.intersects(pos)) {
arr.push(shape);
}
}
return arr;
},
/**
* detect event