import com.lo9ic.Drawable; import com.lo9ic.Node; import com.lo9ic.Style; class com.lo9ic.Polygon implements Drawable { private var $nodes:Array; private var $style:Style; private var $clip:MovieClip; private var $i, $j, $z:Number; function Polygon() { $nodes = new Array(); $style = new Style(); } public function addNode(a:Node, b:Boolean) { $nodes.push({node:a, control:b}); } public function set style(a:Style):Void { $style = a ? a:$style; } public function get style():Style { return $style; } public function set clip(a:MovieClip):Void { $clip = a; } public function draw():Void { $i = 1; $j = 1; $z = 0; $clip.clear(); $clip.moveTo($nodes[0].node.x, $nodes[0].node.y); $clip.lineStyle($style.lineweight, $style.linecolor, $style.linealpha); $clip.beginFill($style.fillcolor, $style.fillalpha); while( $i <= $nodes.length) { $j = $i%$nodes.length; if(!$nodes[$j].control && !$nodes[$i-1].control) { $clip.lineTo($nodes[$j].node.x, $nodes[$j].node.y); } else if ($nodes[$i-1].control) { $clip.curveTo($nodes[$i-1].node.x, $nodes[$i-1].node.y, $nodes[$j].node.x, $nodes[$j].node.y); } $z += $nodes[$j].node.z; $i++; } $clip.endFill(); $clip.swapDepths(10000+$z/$nodes.length); } }