changed getIntersections() to getAllIntersections() to indicate that the method returns more than may be needed. Updatee docs, and clarified the differences between intersects(), getIntersection(), and getAllIntersections()

This commit is contained in:
Eric Rowell
2013-05-17 15:50:53 -07:00
parent 4d682529b6
commit 3433086079
6 changed files with 33 additions and 30 deletions

View File

@@ -155,12 +155,12 @@
return node;
},
/**
* get shapes that intersect a point
* get all shapes that intersect a point
* @method
* @memberof Kinetic.Container.prototype
* @param {Object} point
* @param {Object} pos
*/
getIntersections: function() {
getAllIntersections: function() {
var pos = Kinetic.Util._getXY(Array.prototype.slice.call(arguments));
var arr = [];
var shapes = this.get('Shape');

View File

@@ -74,7 +74,7 @@ var Kinetic = {};
* context.quadraticCurveTo(300, 100, 260, 170);<br>
* context.closePath();<br>
* canvas.fillStroke(this);<br>
* }
* }<br>
*});
*/
Kinetic.Shape = function(config) {

View File

@@ -11,9 +11,11 @@
this.hitCanvas = new Kinetic.HitCanvas();
},
/**
* get intersection object that contains shape and pixel data
* get visible intersection object that contains shape and pixel data. This is the preferred
* method for determining if a point intersects a shape or not
* @method
* @memberof Kinetic.Node.prototype
* @memberof Kinetic.Layer.prototype
* @param {Object} pos point object
*/
getIntersection: function() {
var pos = Kinetic.Util._getXY(Array.prototype.slice.call(arguments)),

View File

@@ -76,7 +76,7 @@
/**
* determines if point is in the shape, regardless if other shapes are on top of it. Note: because
* this method clears a temp hit canvas, and redraws the shape, it performs very poorly if executed many times
* consecutively. If possible, it's better to use the stage.getIntersections() method instead
* consecutively. If possible, it's better to use the stage.getIntersection() method instead
* @method
* @memberof Kinetic.Shape.prototype
* @param {Object} point point can be an object containing

View File

@@ -252,7 +252,8 @@
this.toDataURL(config);
},
/**
* get intersection object that contains shape and pixel data
* get visible intersection object that contains shape and pixel data. This is the preferred
* method for determining if a point intersects a shape or not
* @method
* @memberof Kinetic.Stage.prototype
* @param {Object} pos point object

View File

@@ -77,7 +77,7 @@ Test.Modules.STAGE = {
test(stage.getContent().className === 'kineticjs-content', 'stage DOM class name is wrong');
},
'stage getIntersections()': function(containerId) {
'stage getAllIntersections()': function(containerId) {
var stage = new Kinetic.Stage({
container: containerId,
width: 578,
@@ -116,7 +116,7 @@ Test.Modules.STAGE = {
},
'test getIntersections': function(containerId) {
'test getAllIntersections': function(containerId) {
var stage = new Kinetic.Stage({
container: containerId,
width: 578,
@@ -150,50 +150,50 @@ Test.Modules.STAGE = {
stage.add(layer);
// test individual shapes
test(stage.getIntersections(266, 114).length === 1, '17) getIntersections should return one shape');
test(stage.getIntersections(266, 114)[0].getId() === 'greenCircle', '19) first intersection should be greenCircle');
test(stage.getAllIntersections(266, 114).length === 1, '17) getAllIntersections should return one shape');
test(stage.getAllIntersections(266, 114)[0].getId() === 'greenCircle', '19) first intersection should be greenCircle');
test(stage.getIntersections(414, 115).length === 1, '18) getIntersections should return one shape');
test(stage.getIntersections(414, 115)[0].getId() === 'redCircle', '20) first intersection should be redCircle');
test(stage.getAllIntersections(414, 115).length === 1, '18) getAllIntersections should return one shape');
test(stage.getAllIntersections(414, 115)[0].getId() === 'redCircle', '20) first intersection should be redCircle');
test(stage.getIntersections(350, 118).length === 2, '1) getIntersections should return two shapes');
test(stage.getIntersections(350, 118)[0].getId() === 'redCircle', '2) first intersection should be redCircle');
test(stage.getIntersections(350, 118)[1].getId() === 'greenCircle', '3) second intersection should be greenCircle');
test(stage.getAllIntersections(350, 118).length === 2, '1) getAllIntersections should return two shapes');
test(stage.getAllIntersections(350, 118)[0].getId() === 'redCircle', '2) first intersection should be redCircle');
test(stage.getAllIntersections(350, 118)[1].getId() === 'greenCircle', '3) second intersection should be greenCircle');
// hide green circle. make sure only red circle is in result set
greenCircle.hide();
layer.draw();
test(stage.getIntersections(350, 118).length === 1, '4) getIntersections should return one shape');
test(stage.getIntersections(350, 118)[0].getId() === 'redCircle', '5) first intersection should be redCircle');
test(stage.getAllIntersections(350, 118).length === 1, '4) getAllIntersections should return one shape');
test(stage.getAllIntersections(350, 118)[0].getId() === 'redCircle', '5) first intersection should be redCircle');
// show green circle again. make sure both circles are in result set
greenCircle.show();
layer.draw();
test(stage.getIntersections(350, 118).length === 2, '6) getIntersections should return two shapes');
test(stage.getIntersections(350, 118)[0].getId() === 'redCircle', '7) first intersection should be redCircle');
test(stage.getIntersections(350, 118)[1].getId() === 'greenCircle', '8) second intersection should be greenCircle');
test(stage.getAllIntersections(350, 118).length === 2, '6) getAllIntersections should return two shapes');
test(stage.getAllIntersections(350, 118)[0].getId() === 'redCircle', '7) first intersection should be redCircle');
test(stage.getAllIntersections(350, 118)[1].getId() === 'greenCircle', '8) second intersection should be greenCircle');
// hide red circle. make sure only green circle is in result set
redCircle.hide();
layer.draw();
test(stage.getIntersections(350, 118).length === 1, '9) getIntersections should return one shape');
test(stage.getIntersections(350, 118)[0].getId() === 'greenCircle', '10) first intersection should be greenCircle');
test(stage.getAllIntersections(350, 118).length === 1, '9) getAllIntersections should return one shape');
test(stage.getAllIntersections(350, 118)[0].getId() === 'greenCircle', '10) first intersection should be greenCircle');
// show red circle again. make sure both circles are in result set
redCircle.show();
layer.draw();
test(stage.getIntersections(350, 118).length === 2, '11) getIntersections should return two shapes');
test(stage.getIntersections(350, 118)[0].getId() === 'redCircle', '12) first intersection should be redCircle');
test(stage.getIntersections(350, 118)[1].getId() === 'greenCircle', '13) second intersection should be greenCircle');
test(stage.getAllIntersections(350, 118).length === 2, '11) getAllIntersections should return two shapes');
test(stage.getAllIntersections(350, 118)[0].getId() === 'redCircle', '12) first intersection should be redCircle');
test(stage.getAllIntersections(350, 118)[1].getId() === 'greenCircle', '13) second intersection should be greenCircle');
// test from layer
test(layer.getIntersections(350, 118).length === 2, '14) getIntersections should return two shapes');
test(layer.getIntersections(350, 118)[0].getId() === 'redCircle', '15) first intersection should be redCircle');
test(layer.getIntersections(350, 118)[1].getId() === 'greenCircle', '16) second intersection should be greenCircle');
test(layer.getAllIntersections(350, 118).length === 2, '14) getAllIntersections should return two shapes');
test(layer.getAllIntersections(350, 118)[0].getId() === 'redCircle', '15) first intersection should be redCircle');
test(layer.getAllIntersections(350, 118)[1].getId() === 'greenCircle', '16) second intersection should be greenCircle');
},
'scale stage after add layer': function(containerId) {