package cn.d
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.geom.Point;
public class TwoSegmentResh extends Sprite
{
private var sg1:Segment;
private var sg2:Segment;
private var num:int=20;
private var sglist:Array=[];
public function TwoSegmentResh()
{
super();
stage.scaleMode=StageScaleMode.NO_SCALE;
//stage.align=StageAlign.TOP_LEFT;
init();
}
private function init():void
{
for (var i:int=0; i < num; i++)
{
sg1=new Segment(100, 20);
this.addChild(sg1);
sglist.push(sg1);
}
sglist[0].x=stage.stageWidth / 2;
sglist[0].y=stage.stageHeight / 2;
this.addEventListener(Event.ENTER_FRAME, onEnterFrame)
}
private function onEnterFrame(e:Event):void
{
var targetP:Point=resh(sglist[0], mouseX, mouseY);
for (var i:int=1; i < num; i++)
{
targetP=resh(sglist[i], targetP.x, targetP.y);
}
for (var _i:int=num-1; _i>0; _i--)
{
postion(sglist[_i-1],sglist[_i]);
}
}
private function resh(sg:Segment, _x:Number, _y:Number):Point
{
var dx:Number=_x - sg.x;
var dy:Number=_y - sg.y;
sg.rotation=Math.atan2(dy, dx) * 180 / Math.PI;
var w:Number=sg.getPin().x - sg.x;
var h:Number=sg.getPin().y - sg.y;
return new Point(_x - w, _y - h);
}
private function postion(sgA:Segment, sgB:Segment):void
{
sgA.x=sgB.getPin().x;
sgA.y=sgB.getPin().y;
}
}
}