Make a regular N-gon, or two.
By hp.
package views.shapes {
import flash.events.Event;
import flash.display.Shape;
public class Ngon extends Shape {
protected function redraw():void {
var r:Number = radius;
var a:Number = angle;
var s:Number = Math.PI*2/sides;
graphics.clear();
graphics.beginFill(color,1);
for (var i:uint = 0; i<=sides; ++i) {
graphics.lineTo(r*Math.cos(a+s*i),r*Math.sin(a+s*i));
}
}
private var _sides:uint = 3;
public function get sides():uint { return _sides; }
public function set sides(value:uint):void {
if (value !== _sides) {
_sides = value;
redraw();
}
}
private var _color:uint = 0x0;
public function get color():uint { return _color; }
public function set color(value:uint):void {
if (value !== _color) {
_color = value;
redraw()
}
}
private var _radius:Number;
public function get radius():Number { return _radius; }
public function set radius(value:Number):void {
if (value !== _radius) {
_radius = value;
redraw();
}
}
private var _angle:Number;
public function get angle():Number { return _angle; }
public function set angle(value:Number):void {
if (value !== _angle) {
_angle = value;
redraw();
}
}
}
}
Tags: AS3, geometry, math
This entry was posted
on Monday, December 7th, 2009 at 13:46 and is filed under Flash.
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.
Nice!
But won’t this crash if you instanciate and set either color or sides? With no defaults for radius and angle, I’d assume that the redraw() method will fail. Or am I wrong?
You are right in that positions are NaN when angle and radius are not set.
However, unlike drawRect, lineTo allows NaN as arguments.
private var _angle:Number = 0; etc. is an improvement tho’