diff --git a/src/Container.js b/src/Container.js
index 86687fa2..7a2b46ad 100644
--- a/src/Container.js
+++ b/src/Container.js
@@ -394,4 +394,6 @@
* // set clip height
* container.clipHeight(100);
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Container);
})();
diff --git a/src/Group.js b/src/Group.js
index 4e15273e..a877a4a4 100644
--- a/src/Group.js
+++ b/src/Group.js
@@ -13,4 +13,6 @@
}
});
Kinetic.Util.extend(Kinetic.Group, Kinetic.Container);
+
+ Kinetic.Collection.mapMethods(Kinetic.Group);
})();
diff --git a/src/Layer.js b/src/Layer.js
index dd6be4d4..21aad630 100644
--- a/src/Layer.js
+++ b/src/Layer.js
@@ -333,5 +333,5 @@
* layer.hitGraphEnabled(true);
*/
- Kinetic.Layer.prototype.isHitGraphEnabled = Kinetic.Layer.prototype.getHitGraphEnabled;
+ Kinetic.Collection.mapMethods(Kinetic.Layer);
})();
diff --git a/src/Node.js b/src/Node.js
index 8cd8bff4..c0dc1643 100644
--- a/src/Node.js
+++ b/src/Node.js
@@ -594,7 +594,7 @@
*/
shouldDrawHit: function() {
var layer = this.getLayer();
- return layer && layer.isHitGraphEnabled() && this.isListening() && this.isVisible() && !Kinetic.isDragging();
+ return layer && layer.hitGraphEnabled() && this.isListening() && this.isVisible() && !Kinetic.isDragging();
},
/**
* show node
@@ -1934,21 +1934,5 @@
getRotationDeg: 'getRotation'
});
- Kinetic.Collection.mapMethods([
- 'on',
- 'off',
- 'remove',
- 'destroy',
- 'show',
- 'hide',
- 'move',
- 'rotate',
- 'moveToTop',
- 'moveUp',
- 'moveDown',
- 'moveToBottom',
- 'moveTo',
- 'fire',
- 'draw'
- ]);
+ Kinetic.Collection.mapMethods(Kinetic.Node);
})();
diff --git a/src/Shape.js b/src/Shape.js
index 327631c4..46287590 100644
--- a/src/Shape.js
+++ b/src/Shape.js
@@ -1420,4 +1420,6 @@
getDrawHitFunc: 'getHitFunc',
setDrawHitFunc: 'setHitFunc'
});
+
+ Kinetic.Collection.mapMethods(Kinetic.Shape);
})();
diff --git a/src/Util.js b/src/Util.js
index 531bb020..d9b21c94 100644
--- a/src/Util.js
+++ b/src/Util.js
@@ -64,24 +64,23 @@
return collection;
};
- Kinetic.Collection.mapMethods = function(arr) {
- var leng = arr.length,
- n;
+ Kinetic.Collection.mapMethods = function(constructor) {
+ var prot = constructor.prototype,
+ key;
- for(n = 0; n < leng; n++) {
+ for(key in prot) {
// induce scope
- (function(i) {
- var method = arr[i];
- Kinetic.Collection.prototype[method] = function() {
+ (function(methodName) {
+ Kinetic.Collection.prototype[methodName] = function() {
var len = this.length,
i;
args = [].slice.call(arguments);
for(i = 0; i < len; i++) {
- this[i][method].apply(this[i], args);
+ this[i][methodName].apply(this[i], args);
}
};
- })(n);
+ })(key);
}
};
diff --git a/src/plugins/Label.js b/src/plugins/Label.js
index 2a528d8e..76bfb843 100644
--- a/src/plugins/Label.js
+++ b/src/plugins/Label.js
@@ -154,6 +154,8 @@
Kinetic.Util.extend(Kinetic.Label, Kinetic.Group);
+ Kinetic.Collection.mapMethods(Kinetic.Label);
+
/**
* Tag constructor. A Tag can be configured
* to have a pointer element that points up, right, down, or left
@@ -291,4 +293,6 @@
* @method
* @memberof Kinetic.Tag.prototype
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Tag);
})();
diff --git a/src/plugins/Path.js b/src/plugins/Path.js
index 4ebfdddb..2711c8fe 100644
--- a/src/plugins/Path.js
+++ b/src/plugins/Path.js
@@ -599,4 +599,6 @@
* @method
* @memberof Kinetic.Path.prototype
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Path);
})();
diff --git a/src/plugins/RegularPolygon.js b/src/plugins/RegularPolygon.js
index c8b59d8a..f68debce 100644
--- a/src/plugins/RegularPolygon.js
+++ b/src/plugins/RegularPolygon.js
@@ -84,4 +84,6 @@
* @method
* @memberof Kinetic.RegularPolygon.prototype
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.RegularPolygon);
})();
diff --git a/src/plugins/Star.js b/src/plugins/Star.js
index d9e5a0a9..661f7ddc 100644
--- a/src/plugins/Star.js
+++ b/src/plugins/Star.js
@@ -105,4 +105,6 @@
* @method
* @memberof Kinetic.Star.prototype
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Star);
})();
diff --git a/src/plugins/TextPath.js b/src/plugins/TextPath.js
index fa302788..b736a677 100644
--- a/src/plugins/TextPath.js
+++ b/src/plugins/TextPath.js
@@ -375,4 +375,6 @@
* @method
* @memberof Kinetic.TextPath.prototype
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.TextPath);
})();
diff --git a/src/shapes/Arc.js b/src/shapes/Arc.js
index 482f12d4..2bf9cfd5 100644
--- a/src/shapes/Arc.js
+++ b/src/shapes/Arc.js
@@ -117,4 +117,6 @@
* // draw arc clockwise
* arc.clockwise(true);
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Arc);
})();
diff --git a/src/shapes/Circle.js b/src/shapes/Circle.js
index adce3efd..6de912f5 100644
--- a/src/shapes/Circle.js
+++ b/src/shapes/Circle.js
@@ -76,4 +76,6 @@
* // set radius
* circle.radius(10);
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Circle);
})();
diff --git a/src/shapes/Ellipse.js b/src/shapes/Ellipse.js
index 626254ea..7d1ceb6f 100644
--- a/src/shapes/Ellipse.js
+++ b/src/shapes/Ellipse.js
@@ -118,4 +118,6 @@
* ellipse.radiusY(200);
*/
+ Kinetic.Collection.mapMethods(Kinetic.Ellipse);
+
})();
\ No newline at end of file
diff --git a/src/shapes/Image.js b/src/shapes/Image.js
index de5cfe15..4f4d46f0 100644
--- a/src/shapes/Image.js
+++ b/src/shapes/Image.js
@@ -196,4 +196,6 @@
* // set crop height
* image.cropHeight(20);
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Image);
})();
diff --git a/src/shapes/Line.js b/src/shapes/Line.js
index aa0c47fb..d57fd870 100644
--- a/src/shapes/Line.js
+++ b/src/shapes/Line.js
@@ -198,4 +198,6 @@
* // push a new point
* line.points(line.points().concat([70, 80]));
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Line);
})();
\ No newline at end of file
diff --git a/src/shapes/Rect.js b/src/shapes/Rect.js
index 63e423aa..17293a92 100644
--- a/src/shapes/Rect.js
+++ b/src/shapes/Rect.js
@@ -73,4 +73,6 @@
* // set corner radius
* rect.cornerRadius(10);
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Rect);
})();
diff --git a/src/shapes/Ring.js b/src/shapes/Ring.js
index 0630194c..e4097e05 100644
--- a/src/shapes/Ring.js
+++ b/src/shapes/Ring.js
@@ -63,9 +63,7 @@
Kinetic.Util.extend(Kinetic.Ring, Kinetic.Shape);
// add getters setters
- Kinetic.Factory.addGetterSetter(Kinetic.Ring, 'innerRadius', function() {
- return 0;
- });
+ Kinetic.Factory.addGetterSetter(Kinetic.Ring, 'innerRadius', 0);
/**
* get/set innerRadius
@@ -82,9 +80,7 @@
* ring.innerRadius(20);
*/
- Kinetic.Factory.addGetterSetter(Kinetic.Ring, 'outerRadius', function() {
- return 0;
- });
+ Kinetic.Factory.addGetterSetter(Kinetic.Ring, 'outerRadius', 0);
/**
* get/set outerRadius
@@ -100,4 +96,6 @@
* // set outer radius
* ring.outerRadius(20);
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Ring);
})();
diff --git a/src/shapes/Sprite.js b/src/shapes/Sprite.js
index 1ab1fe39..93a4e43d 100644
--- a/src/shapes/Sprite.js
+++ b/src/shapes/Sprite.js
@@ -256,4 +256,6 @@
getIndex: 'getFrameIndex',
setIndex: 'setFrameIndex'
});
+
+ Kinetic.Collection.mapMethods(Kinetic.Sprite);
})();
diff --git a/src/shapes/Text.js b/src/shapes/Text.js
index 9dd96584..2b4ddf1d 100644
--- a/src/shapes/Text.js
+++ b/src/shapes/Text.js
@@ -450,4 +450,6 @@
* // set text
* text.text('Hello world!');
*/
+
+ Kinetic.Collection.mapMethods(Kinetic.Text);
})();
diff --git a/src/shapes/Wedge.js b/src/shapes/Wedge.js
index f2539b1f..52eab420 100644
--- a/src/shapes/Wedge.js
+++ b/src/shapes/Wedge.js
@@ -101,4 +101,6 @@
getAngleDeg: 'getAngle',
setAngleDeg: 'setAngle'
});
+
+ Kinetic.Collection.mapMethods(Kinetic.Wedge);
})();
diff --git a/test/runner.html b/test/runner.html
index e2af1a58..645885c3 100644
--- a/test/runner.html
+++ b/test/runner.html
@@ -50,6 +50,7 @@
+
diff --git a/test/unit/Collection-test.js b/test/unit/Collection-test.js
new file mode 100644
index 00000000..811dc5f9
--- /dev/null
+++ b/test/unit/Collection-test.js
@@ -0,0 +1,57 @@
+suite('Collection', function(){
+ var util;
+
+ test('test collection method mapping', function(){
+ // Node method
+ assert.notEqual(Kinetic.Collection.prototype.on, undefined);
+
+ // Layer method
+ assert.notEqual(Kinetic.Collection.prototype.getContext, undefined);
+
+ // Container method
+ assert.notEqual(Kinetic.Collection.prototype.hasChildren, undefined);
+
+ // Shape method
+ assert.notEqual(Kinetic.Collection.prototype.strokeWidth, undefined);
+ });
+
+ test('add circle to stage', function(){
+ var stage = addStage();
+ var layer = new Kinetic.Layer();
+ var circle1 = new Kinetic.Circle({
+ x: 100,
+ y: 100,
+ radius: 70,
+ fill: 'green',
+ stroke: 'black',
+ strokeWidth: 4,
+ name: 'myCircle',
+ draggable: true
+ });
+
+
+ var circle2 = new Kinetic.Circle({
+ x:300,
+ y: 100,
+ radius: 70,
+ fill: 'red',
+ stroke: 'black',
+ strokeWidth: 4,
+ name: 'myCircle',
+ draggable: true
+ });
+
+
+ layer.add(circle1).add(circle2);
+ stage.add(layer);
+
+ layer.find('Circle').fill('blue');
+ layer.draw();
+
+ //console.log(layer.getContext().getTrace());
+
+ assert.equal(layer.getContext().getTrace(),'clearRect(0,0,578,200);save();transform(1,0,0,1,100,100);beginPath();arc(0,0,70,0,6.283,false);closePath();fillStyle=green;fill();lineWidth=4;strokeStyle=black;stroke();restore();save();transform(1,0,0,1,300,100);beginPath();arc(0,0,70,0,6.283,false);closePath();fillStyle=red;fill();lineWidth=4;strokeStyle=black;stroke();restore();clearRect(0,0,578,200);save();transform(1,0,0,1,100,100);beginPath();arc(0,0,70,0,6.283,false);closePath();fillStyle=blue;fill();lineWidth=4;strokeStyle=black;stroke();restore();save();transform(1,0,0,1,300,100);beginPath();arc(0,0,70,0,6.283,false);closePath();fillStyle=blue;fill();lineWidth=4;strokeStyle=black;stroke();restore();');
+
+
+ });
+});
\ No newline at end of file
diff --git a/test/unit/Layer-test.js b/test/unit/Layer-test.js
index 46e924a9..8bf8d55c 100644
--- a/test/unit/Layer-test.js
+++ b/test/unit/Layer-test.js
@@ -279,17 +279,17 @@ suite('Layer', function() {
layer.add(circle);
stage.add(layer);
- assert.equal(layer.isHitGraphEnabled(), true);
+ assert.equal(layer.hitGraphEnabled(), true);
assert.equal(layer.shouldDrawHit(), true);
layer.disableHitGraph();
- assert.equal(layer.isHitGraphEnabled(), false);
+ assert.equal(layer.hitGraphEnabled(), false);
assert.equal(layer.shouldDrawHit(), false);
layer.enableHitGraph();
- assert.equal(layer.isHitGraphEnabled(), true);
+ assert.equal(layer.hitGraphEnabled(), true);
assert.equal(layer.shouldDrawHit(), true);
});
});
\ No newline at end of file