mirror of
https://github.com/konvajs/konva.git
synced 2025-06-28 15:23:44 +08:00
68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
///////////////////////////////////////////////////////////////////////
|
|
// RegularPolygon
|
|
///////////////////////////////////////////////////////////////////////
|
|
/**
|
|
* RegularPolygon constructor. Examples include triangles, squares, pentagons, hexagons, etc.
|
|
* @constructor
|
|
* @augments Kinetic.Shape
|
|
* @param {Object} config
|
|
*/
|
|
Kinetic.RegularPolygon = function(config) {
|
|
this._initRegularPolygon(config);
|
|
};
|
|
|
|
Kinetic.RegularPolygon.prototype = {
|
|
_initRegularPolygon: function(config) {
|
|
this.setDefaultAttrs({
|
|
radius: 0,
|
|
sides: 0
|
|
});
|
|
|
|
this.shapeType = "RegularPolygon";
|
|
config.drawFunc = this.drawFunc;
|
|
// call super constructor
|
|
Kinetic.Shape.call(this, config);
|
|
},
|
|
drawFunc: function(context) {
|
|
context.beginPath();
|
|
context.moveTo(0, 0 - this.attrs.radius);
|
|
|
|
for(var n = 1; n < this.attrs.sides; n++) {
|
|
var x = this.attrs.radius * Math.sin(n * 2 * Math.PI / this.attrs.sides);
|
|
var y = -1 * this.attrs.radius * Math.cos(n * 2 * Math.PI / this.attrs.sides);
|
|
context.lineTo(x, y);
|
|
}
|
|
context.closePath();
|
|
this.fill(context);
|
|
this.stroke(context);
|
|
}
|
|
};
|
|
Kinetic.Global.extend(Kinetic.RegularPolygon, Kinetic.Shape);
|
|
|
|
// add getters setters
|
|
Kinetic.Node.addGettersSetters(Kinetic.RegularPolygon, ['radius', 'sides']);
|
|
|
|
/**
|
|
* set radius
|
|
* @name setRadius
|
|
* @methodOf Kinetic.RegularPolygon.prototype
|
|
* @param {Number} radius
|
|
*/
|
|
|
|
/**
|
|
* set number of sides
|
|
* @name setSides
|
|
* @methodOf Kinetic.RegularPolygon.prototype
|
|
* @param {int} sides
|
|
*/
|
|
/**
|
|
* get radius
|
|
* @name getRadius
|
|
* @methodOf Kinetic.RegularPolygon.prototype
|
|
*/
|
|
|
|
/**
|
|
* get number of sides
|
|
* @name getSides
|
|
* @methodOf Kinetic.RegularPolygon.prototype
|
|
*/ |