flash on 2015-2-12
♥0 |
Line 76 |
Modified 2015-02-12 04:54:31 |
MIT License
archived:2017-03-30 11:48:21
ActionScript3 source code
/**
* Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/18Am
*/
package {
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
vec = new Vector.<xPnt>(16,false);
var i:int; var num:int; var a:xPnt;
num = vec.length;
cx = 0; cy = 0;
for (i =0; i<num; i++)
{
a = new xPnt(); vec[i] = a;
a.cx = Math.random()*300+40;
a.cy = Math.random()*300+40;
cx+=a.cx; cy+=a.cy;
}
cx/=num; cy/=num;
sortPnt();
stage.addEventListener(MouseEvent.CLICK, onClick);
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public function onClick(e:MouseEvent):void
{
cx = stage.mouseX; cy = stage.mouseY;
sortPnt();
}//onclick
public function comp(a:xPnt, b:xPnt):Number
{
if (a.ang < b.ang) { return -1;}
if (a.ang > b.ang) { return 1; }
return 0;
}
public function sortPnt():void
{
var i:int; var num:int; var a:xPnt;
num = vec.length;
for (i =0; i<num; i++)
{
a = vec[i] ;
a.ang = Math.atan2(cy-a.cy,cx-a.cx);
}
vec = vec.sort(comp);
}//sortpnt
public var vec:Vector.<xPnt>;
public var cx:Number = 0;
public var cy:Number = 0;
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(2, 0);
graphics.drawCircle(cx,cy,8);
var i:int; var num:int; var a:xPnt;
num = vec.length;
for (i =0; i<num; i++)
{
a = vec[i] ;
graphics.drawCircle(a.cx,a.cy,4);
graphics.moveTo(a.cx,a.cy);
graphics.lineTo(a.cx+Math.cos(a.ang)*8,a.cy+Math.sin(a.ang)*8);
}
graphics.beginFill(0,0.2);
a = vec[0]; graphics.moveTo(a.cx,a.cy);
for (i =1; i<num; i++)
{ a = vec[i]; graphics.lineTo(a.cx,a.cy); }
a = vec[0]; graphics.lineTo(a.cx,a.cy);
graphics.endFill();
}//onenter
}//classend
}
internal class xPnt
{
public var cx:Number = 0;
public var cy:Number = 0;
public var ang:Number = 0;
}//xpnt