package { import flash.display.Graphics; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Point; public class FivePoint extends Sprite { private var mx:Number = stage.mouseX; private var my:Number = stage.mouseY; private var a:Number; private var b:Number; private var c:Number; private var d:Number; private var e:Number; private var f:Number; private var g:Number; private var h:Number; private var i:Number; private var j:Number; private var centerP:Point = new Point(0, 0); private var pt1:Point = new Point(-95.1, -30.9); private var pt2:Point = new Point(95.1, -30.9); private var pt3:Point = new Point(58.8, 80.9); private var pt4:Point = new Point( -58.8, 80.9); private var pt5:Point = new Point(0, -100); private var vec1:Point; private var vec2:Point; private var vec3:Point; private var vec4:Point; private var vec5:Point; private var aP:Point; private var bP:Point; private var cP:Point; private var dP:Point; private var eP:Point; private var fP:Point; private var gP:Point; private var hP:Point; private var iP:Point; private var jP:Point; private var Center:Sprite; private var Point1:Sprite; private var Point2:Sprite; private var Point3:Sprite; private var Point4:Sprite; private var Point5:Sprite; private var Line:Sprite; private var speed:uint = 5; private var m_on:Boolean = false; public function FivePoint():void { vector(); center(); first(); second(); third(); fourth(); fifth(); stage.addEventListener(MouseEvent.MOUSE_DOWN, onMDown); stage.addEventListener(MouseEvent.MOUSE_UP, onMUp); stage.addEventListener(MouseEvent.MOUSE_MOVE, onMMove); } private function vector():void { vec1 = new Point(); //vec1 = pt2.subtract(pt1); vec1 = pt5.subtract(pt1); vec1.normalize(speed); vec2 = new Point(); //vec2 = pt4.subtract(pt2); vec2 = pt2.subtract(pt5); vec2.normalize(speed); vec3 = new Point(); //vec3 = pt1.subtract(pt3); vec3 = pt3.subtract(pt2); vec3.normalize(speed); vec4 = new Point(); //vec4 = pt5.subtract(pt4); vec4 = pt4.subtract(pt3); vec4.normalize(speed); vec5 = new Point(); //vec5 = pt3.subtract(pt5); vec5 = pt1.subtract(pt4); vec5.normalize(speed); } private function center():void { Center = new Sprite(); Center.x = mx; Center.y = my; stage.addChild(Center); /* var Cg:Graphics = Center.graphics; Cg.lineStyle(1, 0x000000); Cg.moveTo(pt1.x, pt1.y); Cg.lineTo(pt2.x, pt2.y); Cg.lineTo(pt4.x, pt4.y); Cg.lineTo(pt5.x, pt5.y); Cg.lineTo(pt3.x, pt3.y); Cg.lineTo(pt1.x, pt1.y); Cg.drawCircle(0, 0, 2); */ } private function onMDown(event:MouseEvent):void { m_on = true; drawLine(); } private function onMUp(event:MouseEvent):void { m_on = false; } private function onMMove(event:MouseEvent):void { Center.x = stage.mouseX; Center.y = stage.mouseY; if (m_on) { Point1.addEventListener(Event.ENTER_FRAME, onPt1); Point2.addEventListener(Event.ENTER_FRAME, onPt2); Point4.addEventListener(Event.ENTER_FRAME, onPt4); Point5.addEventListener(Event.ENTER_FRAME, onPt5); Point3.addEventListener(Event.ENTER_FRAME, onPt3); } else { Point1.removeEventListener(Event.ENTER_FRAME, onPt1); Point2.removeEventListener(Event.ENTER_FRAME, onPt2); Point3.removeEventListener(Event.ENTER_FRAME, onPt3); Point4.removeEventListener(Event.ENTER_FRAME, onPt4); Point5.removeEventListener(Event.ENTER_FRAME, onPt5); } } private function drawLine():void { Line = new Sprite(); stage.addChild(Line); Line.x = 0; Line.y = 0; var color:uint = Math.random() * 0xFFFFFF; Line.graphics.lineStyle(1, color, 0.75); Line.addEventListener(Event.ENTER_FRAME, onAlpha); } private function onAlpha(event:Event):void { trace(Line.alpha); if (Line.alpha > 0) { Line.alpha -= 0.001; } else { Line.graphics.clear(); Line.removeEventListener(Event.ENTER_FRAME, onAlpha); } } private function first():void { Point1 = new Sprite(); Point1.x = pt1.x; Point1.y = pt1.y; Center.addChild(Point1); var Pg1:Graphics = Point1.graphics; Pg1.lineStyle(1, 0x000000); Pg1.beginFill(0xFFFFFF); Pg1.drawCircle(0, 0, 3); } private function second():void { Point2 = new Sprite(); Point2.x = pt2.x; Point2.y = pt2.y; Center.addChild(Point2); var Pg2:Graphics = Point2.graphics; Pg2.lineStyle(1, 0x000000); Pg2.beginFill(0xFFFFFF); Pg2.drawCircle(0, 0, 3); } private function third():void { Point3 = new Sprite(); Point3.x = pt3.x; Point3.y = pt3.y; Center.addChild(Point3); var Pg3:Graphics = Point3.graphics; Pg3.lineStyle(1, 0x000000); Pg3.beginFill(0xFFFFFF); Pg3.drawCircle(0, 0, 3); } private function fourth():void { Point4 = new Sprite(); Point4.x = pt4.x; Point4.y = pt4.y; Center.addChild(Point4); var Pg4:Graphics = Point4.graphics; Pg4.lineStyle(1, 0x000000); Pg4.beginFill(0xFFFFFF); Pg4.drawCircle(0, 0, 3); } private function fifth():void { Point5 = new Sprite(); Point5.x = pt5.x; Point5.y = pt5.y; Center.addChild(Point5); var Pg5:Graphics = Point5.graphics; Pg5.lineStyle(1, 0x000000); Pg5.beginFill(0xFFFFFF); Pg5.drawCircle(0, 0, 3); } private function rotate():void { var pt6:Point = new Point( -20, -30); var pt7:Point = new Point(20, -30); var pt8:Point = new Point(35, 10); var pt9:Point = new Point(-35, 10); var pt0:Point = new Point(0, 60); aP = pt1.subtract(centerP); a = Math.atan2(aP.y, aP.x) * 180 / Math.PI; bP = pt6.subtract(centerP); b = Math.atan2(bP.y, bP.x) * 180 / Math.PI; cP = pt5.subtract(centerP); c = Math.atan2(cP.y, cP.x) * 180 / Math.PI; dP = pt7.subtract(centerP); d = Math.atan2(dP.y, dP.x) * 180 / Math.PI; eP = pt2.subtract(centerP); e = Math.atan2(eP.y, eP.x) * 180 / Math.PI; fP = pt8.subtract(centerP); f = Math.atan2(fP.y, fP.x) * 180 / Math.PI; gP = pt3.subtract(centerP); g = Math.atan2(gP.y, gP.x) * 180 / Math.PI; hP = pt0.subtract(centerP); h = Math.atan2(hP.y, hP.x) * 180 / Math.PI; iP = pt4.subtract(centerP); i = Math.atan2(iP.y, iP.x) * 180 / Math.PI; jP = pt9.subtract(centerP); j = Math.atan2(jP.y, jP.x) * 180 / Math.PI; } private function road(sp:Sprite):void { var mp:Point = new Point(sp.x, sp.y); var myV:Point = new Point(); myV = mp.subtract(centerP); var rotV:Number = Math.atan2(myV.y, myV.x) * 180 / Math.PI; if (rotV >= a && rotV < c) { sp.x += vec1.x; sp.y += vec1.y; } else if (rotV >= c && rotV < e) { sp.x += vec2.x; sp.y += vec2.y; } else if (rotV >= e && rotV < g) { sp.x += vec3.x; sp.y += vec3.y; } else if (rotV >= g && rotV < i) { sp.x += vec4.x; sp.y += vec4.y; } else { sp.x += vec5.x; sp.y += vec5.y; } /* if (rotV >= a && rotV < b) { sp.x += vec1.x; sp.y += vec1.y; } else if (rotV >= b && rotV < c) { sp.x += vec4.x; sp.y += vec4.y; } else if (rotV >= c && rotV < d) { sp.x += vec5.x; sp.y += vec5.y; } else if (rotV >= d && rotV < e) { sp.x += vec1.x; sp.y += vec1.y; } else if (rotV >= e && rotV < f) { sp.x += vec2.x; sp.y += vec2.y; } else if (rotV >= f && rotV < g) { sp.x += vec5.x; sp.y += vec5.y; } else if (rotV >= g && rotV < h) { sp.x += vec3.x; sp.y += vec3.y; } else if (rotV >= h && rotV < i) { sp.x += vec2.x; sp.y += vec2.y; } else if (rotV >= i && rotV < j) { sp.x += vec4.x; sp.y += vec4.y; } else { sp.x += vec3.x; sp.y += vec3.y; } */ } private function onPt1(event:Event):void { rotate(); road(Point1); Line.graphics.moveTo(Center.x + Point1.x, Center.y + Point1.y); } private function onPt2(event:Event):void { rotate(); road(Point2); Line.graphics.lineTo(Center.x + Point2.x, Center.y + Point2.y); } private function onPt3(event:Event):void { rotate(); road(Point3); Line.graphics.lineTo(Center.x + Point3.x, Center.y + Point3.y); Line.graphics.lineTo(Center.x + Point1.x, Center.y + Point1.y); } private function onPt4(event:Event):void { rotate(); road(Point4); Line.graphics.lineTo(Center.x + Point4.x, Center.y + Point4.y); } private function onPt5(event:Event):void { rotate(); road(Point5); Line.graphics.lineTo(Center.x + Point5.x, Center.y + Point5.y); } } }