drawstar

by lizhi
...
@author lizhi http://matrix3d.github.io/
♥0 | Line 52 | Modified 2013-07-22 21:40:54 | MIT License
play

ActionScript3 source code

/**
 * Copyright lizhi ( http://wonderfl.net/user/lizhi )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/xZ26
 */

package  
{
	import flash.display.Sprite;
	import flash.geom.Point;
	/**
	 * ...
	 * @author lizhi http://matrix3d.github.io/
	 */
	public class DrawStar extends Sprite
	{
		public function DrawStar() 
		{
			graphics.lineStyle(0);
			var n:int = 6;
			for (var j:int = 0; j < n*n;j++ ) {
				var r:Number = 20;
				var minRP:Number = .5;
				var minR:Number = r * minRP;
				var x:int = (j%n)*r*3+r*2;
				var y:int = int(j/n)*r*3+r*2;
				var num:int = 3+j/2;
				var num2:int = num * 2;
				var a:Number = Math.PI / num;
				var a2:Number = a * 2;
				var sa:Number = 0;
				var isB:Boolean = j % 2 == 1;
				var vs:Array = [];
				for (var i:int = 0; i <= num2;i++ ) {
					var ca:Number = i * a;
					var cr:Number = (i % 2) == 0?r:minR;
					var dx:Number = x + cr * Math.cos(ca)
					var dy:Number = y + cr * Math.sin(ca);
					if (i == 0) {
						if(!isB)graphics.moveTo(dx, dy);
					}else {
						if (!isB) graphics.lineTo(dx, dy);
						else vs.push(new Point(dx,dy));
					}
				}
				if(isB){
					vs = vs.concat(vs);
					for (i = 0; i <= num2;i++ ) {
						var p0:Point = vs[i];
						var p1:Point = vs[i + 1];
						var p01:Point = new Point((p0.x + p1.x) / 2, (p0.y + p1.y) / 2);
						if (i==0) {
							graphics.moveTo(p01.x, p01.y);
						}else {
							graphics.curveTo(p0.x, p0.y, p01.x, p01.y);
						}
					}
				}
				
			}
			
		}
		
	}

}

Forked