zoukankan      html  css  js  c++  java
  • [ActionScript 3.0] AS3 双A字模型

      1 package
      2 {
      3     import caurina.transitions.Tweener;
      4     
      5     import flash.display.Sprite;
      6     import flash.events.MouseEvent;
      7     import flash.geom.Point;
      8     import flash.text.TextField;
      9     import flash.text.TextFormat;
     10     import flash.text.TextFormatAlign;
     11     import flash.utils.setTimeout;
     12     
     13     /**
     14      * @author Frost.Yen
     15      * @E-mail 871979853@qq.com
     16      * @create 2015-8-27 下午4:48:05
     17      *
     18      */
     19     [SWF(width="1024",height="800",backgroundColor="0x000000")]
     20     public class Main extends Sprite
     21     {
     22         private var _overlapBtn:TextField;
     23         private var _separateBtn:TextField;
     24         private var _resetBtn:TextField;
     25         private var _overlapContainer:Sprite;
     26         private var _separateContainer:Sprite;
     27         private var _part1:Sprite;
     28         private var _part2:Sprite;
     29         private var _dotA:Sprite;
     30         private var _dotD:Sprite;
     31         private var _dotE:Sprite;
     32         private var _dotF:Sprite;
     33         private var _tA:TextField;
     34         private var _tB:TextField;
     35         private var _tC:TextField;
     36         private var _tD:TextField;
     37         private var _tE:TextField;
     38         private var _tF:TextField;
     39         private var _tG:TextField;
     40         private var _tA1:TextField;
     41         private var _tB1:TextField;
     42         private var _tC1:TextField;
     43         private var _tD1:TextField;
     44         private var _tE1:TextField;
     45         private var _tF1:TextField;
     46         private var _tG1:TextField;
     47         private var __tA1:TextField;
     48         private var __tC1:TextField;
     49         private var __tE1:TextField;
     50         private var _ratioABD:Number;//AB/AD比率
     51         private var _ratioDEF:Number;//DE/DF比率
     52         private var _tempB:Point;
     53         private var _tempG:Point;
     54         private var _dragDot:String="A";
     55         private var _tf:TextFormat = new TextFormat("Times New Roman",26,0xffffff,true);
     56         private var A:Point = new Point();
     57         private var B:Point = new Point();
     58         private var C:Point = new Point();
     59         private var D:Point = new Point();
     60         private var E:Point = new Point();
     61         private var F:Point = new Point();
     62         private var G:Point = new Point();
     63         private var AE:Sprite = new Sprite();
     64         private var BG:Sprite = new Sprite();
     65         private var AD:Sprite = new Sprite();
     66         private var DF:Sprite = new Sprite();
     67         private var AF:Sprite = new Sprite();
     68         private var BG_drag:Sprite = new Sprite();
     69         public function Main()
     70         {
     71             initViews();
     72             initEventListeners();
     73         }
     74         private function initViews():void
     75         {
     76             _overlapContainer = new Sprite();
     77             _separateContainer = new Sprite();
     78             _part1 = new Sprite();
     79             _part2 = new Sprite();
     80             _overlapBtn = getButton("overlap",this,50,100);
     81             _separateBtn = getButton("separate",this,50,160);
     82             _resetBtn = getButton("reset",this,50,220);
     83             _tA = getTextField("A",_overlapContainer);
     84             _tB = getTextField("B",_overlapContainer);
     85             _tC = getTextField("C",_overlapContainer);
     86             _tD = getTextField("D",_overlapContainer);
     87             _tE = getTextField("E",_overlapContainer);
     88             _tF = getTextField("F",_overlapContainer);
     89             _tG = getTextField("G",_overlapContainer);
     90             _tA1 = getTextField("A",_part1);
     91             _tB1 = getTextField("B",_part1);
     92             _tC1 = getTextField("C",_part1);
     93             _tD1 = getTextField("D",_part1);
     94             _tE1 = getTextField("E",_part1);
     95             _tF1 = getTextField("F",_part2);
     96             _tG1 = getTextField("G",_part2);
     97             __tA1 = getTextField("A",_part2);
     98             __tC1 = getTextField("C",_part2);
     99             __tE1 = getTextField("E",_part2);
    100             _dotA = getDot(4,_overlapContainer,"A");
    101             _dotD = getDot(4,_overlapContainer,"D");
    102             _dotF = getDot(4,_overlapContainer,"F");
    103             _dotE = getDot(4,_overlapContainer,"E");
    104             _separateContainer.addChild(_part1);
    105             _separateContainer.addChild(_part2);
    106             _overlapContainer.addChildAt(BG_drag,0);
    107             _overlapContainer.addChildAt(_dotA,0);
    108             _overlapContainer.addChildAt(AE,0);
    109             _overlapContainer.addChildAt(BG,0);
    110             _overlapContainer.addChildAt(AD,0);
    111             _overlapContainer.addChildAt(DF,0);
    112             _overlapContainer.addChildAt(AF,0);
    113             
    114             this.addChild(_overlapContainer);
    115             this.addChild(_separateContainer);
    116             BG_drag.alpha = 0;
    117         }
    118         private function initEventListeners():void
    119         {
    120             _overlapBtn.addEventListener(MouseEvent.CLICK,onOverlap);
    121             _separateBtn.addEventListener(MouseEvent.CLICK,onSeparate);
    122             _resetBtn.addEventListener(MouseEvent.CLICK,onReset);
    123             _dotE.addEventListener(MouseEvent.MOUSE_DOWN,onDotEDown);
    124             _dotA.addEventListener(MouseEvent.MOUSE_DOWN,onDotDown);
    125             _dotD.addEventListener(MouseEvent.MOUSE_DOWN,onDotDown);
    126             _dotF.addEventListener(MouseEvent.MOUSE_DOWN,onDotDown);
    127             BG_drag.addEventListener(MouseEvent.MOUSE_DOWN,onBGDown);
    128             reset();
    129         }
    130         
    131         private function onOverlap(e:MouseEvent):void
    132         {
    133             Tweener.removeAllTweens();
    134             overlap(_part1,_part2);
    135             setTimeout(hidOverlap,800);
    136             function hidOverlap():void{
    137                 if(_part1.x == _overlapContainer.x){
    138                     _separateContainer.visible = false;
    139                     _overlapContainer.visible = true;
    140                 }
    141             }
    142         }
    143         private function onSeparate(e:MouseEvent):void
    144         {
    145             Tweener.removeAllTweens();
    146             _part1.visible = true;
    147             _part2.visible = true;
    148             _separateContainer.visible = true;
    149             _overlapContainer.visible = false;
    150             drawPart();
    151             separate(_part1,_part2);
    152         }
    153         private function onReset(e:MouseEvent):void
    154         {
    155             _part1.x = _part2.x = _overlapContainer.x;
    156             _part1.y = _part2.y = _overlapContainer.y;
    157             _separateContainer.visible = true;
    158             _overlapContainer.visible = false;
    159             reset();
    160         }
    161         private function onDotDown(e:MouseEvent):void
    162         {
    163             stage.addEventListener(MouseEvent.MOUSE_UP,onDotUp);
    164             stage.addEventListener(MouseEvent.MOUSE_MOVE,onDotMove);
    165             e.currentTarget.startDrag();
    166             _dragDot = e.currentTarget.name;
    167         }
    168         private function onDotMove(e:MouseEvent):void
    169         {
    170             drawAll();
    171         }
    172         private function onDotUp(e:MouseEvent):void
    173         {
    174             stopDrag();
    175             stage.removeEventListener(MouseEvent.MOUSE_UP,onDotUp);
    176             stage.removeEventListener(MouseEvent.MOUSE_MOVE,onDotMove);
    177             drawAll();
    178         }
    179         private function onDotEDown(e:MouseEvent):void
    180         {
    181             stage.addEventListener(MouseEvent.MOUSE_UP,onDotEUp);
    182             stage.addEventListener(MouseEvent.MOUSE_MOVE,onDotEMove);
    183         }
    184         private function onDotEMove(e:MouseEvent):void
    185         {
    186             MoveAE();
    187         }
    188         private function MoveAE():void
    189         {
    190             var k_DF:Number = (D.y-F.y)/(D.x-F.x);//DF的k即BG的k
    191             var b_DF:Number = D.y - k_DF * D.x;//DF的b
    192             var k_AE:Number = (A.y-mouseY)/(A.x-mouseX);
    193             var b_AE:Number = mouseY - k_AE * mouseX;
    194             if(D.x == F.x){
    195                 E.x = D.x;
    196                 E.y = mouseY;
    197             }else{
    198                 E.x = (b_AE - b_DF) / (k_DF - k_AE);
    199                 E.y = k_AE * E.x + b_AE;
    200             }
    201             
    202             if (!isBetween(E,D,F)) {
    203                 if(Point.distance(D,E)<Point.distance(E,F)){
    204                     E.x = D.x;
    205                     E.y = D.y;
    206                 }else{
    207                     E.x = F.x;
    208                     E.y = F.y;
    209                 }
    210             }
    211             drawLine(A,E,AE);
    212             _dotE.x = E.x;
    213             _dotE.y = E.y;
    214             setCoords();    
    215         }
    216         private function onDotEUp(e:MouseEvent):void
    217         {
    218             _ratioDEF = Point.distance(D,E) / Point.distance(D,F);
    219             stage.removeEventListener(MouseEvent.MOUSE_UP,onDotEUp);
    220             stage.removeEventListener(MouseEvent.MOUSE_MOVE,onDotEMove);
    221         }
    222         private function onBGDown(e:MouseEvent):void
    223         {
    224             stage.addEventListener(MouseEvent.MOUSE_UP,onBGUp);
    225             stage.addEventListener(MouseEvent.MOUSE_MOVE,onBGMove);
    226         }
    227         private function onBGMove(e:MouseEvent):void
    228         {
    229             drawLineBG("BG");
    230         }
    231         private function onBGUp(e:MouseEvent):void
    232         {
    233             stage.removeEventListener(MouseEvent.MOUSE_UP,onBGUp);
    234             stage.removeEventListener(MouseEvent.MOUSE_MOVE,onBGMove);
    235         }
    236         private function drawLine(startP:Point,endP:Point,sp:Sprite,thickness:Number = 2):void
    237         {
    238             sp.graphics.clear();
    239             sp.graphics.lineStyle(thickness,0xffffff);
    240             sp.graphics.moveTo(startP.x,startP.y);
    241             sp.graphics.lineTo(endP.x,endP.y);
    242         }
    243         private function drawLineBG(dot:String):void
    244         {
    245             var k_AD:Number = (A.y-D.y)/(A.x-D.x);
    246             var b_AD:Number = A.y - k_AD * A.x;
    247             var k_AF:Number = (A.y-F.y)/(A.x-F.x);
    248             var b_AF:Number = A.y - k_AF * A.x;
    249             var k_DF:Number = (D.y-F.y)/(D.x-F.x);//DF的k即BG的k
    250             var b_DF:Number = D.y - k_DF * D.x;//DF的b
    251             var b_BG:Number;
    252             
    253             if(A.x == D.x||A.x==F.x||D.x==F.x||A.x == C.x){
    254                 trace("无斜率");
    255                 return;
    256             }
    257             if(A.y == k_DF*A.x+b_DF ){//判断三个点是否在同一直线 
    258                 trace("三个顶点处于同一直线,不是三角形");
    259                 return;
    260             }
    261             if (dot == "F") {//拖动F
    262                 //B.x = (B.y-b_AD)/k_AD;
    263                 B.x = _ratioABD*(D.x-A.x)+A.x;
    264                 b_BG = B.y - k_DF * B.x;
    265                 G.x = (b_BG - b_AF) / (k_AF - k_DF);
    266                 G.y = k_DF * G.x + b_BG;
    267                 
    268                 drawLine(B,G,BG);
    269                 drawLine(B,G,BG_drag,4);
    270             } else if (dot == "D") {//拖动D
    271                 //G.x = (G.y-b_AF)/k_AF;
    272                 G.x = _ratioABD*(F.x-A.x)+A.x;
    273                 b_BG = G.y - k_DF * G.x;
    274                 B.x = (b_BG - b_AD) / (k_AD - k_DF);
    275                 B.y = k_DF * B.x + b_BG;
    276                 drawLine(B,G,BG);
    277                 drawLine(B,G,BG_drag,4);
    278             } else if (dot == "A") {
    279                 B.y = _ratioABD*(D.y-A.y)+A.y;
    280                 //B.x = (B.y-b_AD)/k_AD;
    281                 B.x = _ratioABD*(D.x-A.x)+A.x;
    282                 b_BG = B.y - k_DF * B.x;
    283                 G.x = (b_BG - b_AF) / (k_AF - k_DF);
    284                 G.y = k_DF * G.x + b_BG;
    285                 drawLine(B,G,BG);
    286                 drawLine(B,G,BG_drag,4);
    287             } else {//拖动BG
    288                 b_BG = mouseY - k_DF * mouseX;
    289                 B.x = (b_BG - b_AD) / (k_AD - k_DF);
    290                 B.y = k_DF * B.x + b_BG;
    291                 G.x = (b_BG - b_AF) / (k_AF - k_DF);
    292                 G.y = k_DF * G.x + b_BG;
    293                 if (!isBetween(B,D,A)) {
    294                     if(Point.distance(A,B)>Point.distance(D,B)){
    295                         B.x = D.x;
    296                         B.y = D.y;
    297                         G.x = F.x;
    298                         G.y = F.y;
    299                     }else{
    300                         B.x = _tempB.x;
    301                         B.y = _tempB.y;
    302                         G.x = _tempG.x;
    303                         G.y = _tempG.y;
    304                     }
    305                 }
    306                 drawLine(B,G,BG);
    307                 drawLine(B,G,BG_drag,4);
    308                 _ratioABD = Point.distance(A,B) / Point.distance(A,D);
    309                 setCoords();
    310             }
    311             if(Point.distance(B,G)>2){
    312                 _tempB = new Point(B.x,B.y);
    313                 _tempG = new Point(G.x,G.y);
    314             }
    315             
    316             E.y = _ratioDEF*(F.y-D.y)+D.y;
    317             E.x = _ratioDEF*(F.x-D.x)+D.x;
    318             _dotE.x = E.x;
    319             _dotE.y = E.y;
    320         }
    321         
    322         private function reset():void
    323         {
    324             _dotA.x = 625;
    325             _dotA.y = 335;
    326             _dotD.x = 523;
    327             _dotD.y = 513;
    328             _dotE.x = 598;
    329             _dotE.y = 513;
    330             _dotF.x = 690;
    331             _dotF.y = 513;
    332             _dragDot = "A";
    333             setCoords();
    334             _ratioABD = Point.distance(A,getB(428)) / Point.distance(A,D);
    335             _ratioDEF = Point.distance(D,E) / Point.distance(D,F);
    336             _separateContainer.visible = true;
    337             _overlapContainer.visible = false;
    338             drawAll();
    339             drawPart();
    340             separate(_part1,_part2);
    341         }
    342         private function drawAll():void{
    343             drawLine(A,D,AD);
    344             drawLine(D,F,DF);
    345             drawLine(A,F,AF);
    346             drawLineBG(_dragDot);
    347             drawLine(A,E,AE);
    348             setCoords();
    349         }
    350         private function setCoords():void
    351         {
    352             A.x = _dotA.x;
    353             A.y = _dotA.y;
    354             D.x = _dotD.x;
    355             D.y = _dotD.y;
    356             E.x = _dotE.x;
    357             E.y = _dotE.y;
    358             F.x = _dotF.x;
    359             F.y = _dotF.y;
    360             _tA.x = getPointByExtension(getMidpoint(D,F),A).x-_tA.width*0.5;
    361             _tA.y = getPointByExtension(getMidpoint(D,F),A).y-_tA.height*0.5;;
    362             _tB.x = getPointByExtension(G,B,25).x-_tA.width*0.5;
    363             _tB.y = getPointByExtension(G,B,25).y-_tA.height*0.5;;
    364             var extensionC:Point = getPointByExtension(getMidpoint(A,G),getC(),30);
    365             getC().x > G.x ? _tC.x = extensionC.x + 5-_tA.width*0.5:_tC.x = extensionC.x - 5-_tA.width*0.5;;
    366             getC().y > G.y ? _tC.y = extensionC.y + 5-_tA.height*0.5:_tC.y = extensionC.y - 5-_tA.height*0.5;;
    367             _tD.x = getPointByExtension(getMidpoint(A,F),D).x-_tA.width*0.5;
    368             _tD.y = getPointByExtension(getMidpoint(A,F),D).y-_tA.height*0.5;
    369             _tE.x = getPointByExtension(A,E).x-_tA.width*0.5;
    370             _tE.y = getPointByExtension(A,E).y-_tA.height*0.5;
    371             _tF.x = getPointByExtension(getMidpoint(A,D),F).x-_tA.width*0.5;
    372             _tF.y = getPointByExtension(getMidpoint(A,D),F).y-_tA.height*0.5;
    373             _tG.x = getPointByExtension(B,G,25).x-_tA.width*0.5;
    374             _tG.y = getPointByExtension(B,G,25).y-_tA.height*0.5;
    375             
    376         }
    377         private function drawPart():void
    378         {
    379             _part1.graphics.clear();
    380             _part2.graphics.clear();
    381             drawPartLine(A,D,_part1);
    382             drawPartLine(D,E,_part1);
    383             drawPartLine(A,E,_part1);
    384             drawPartLine(B,C,_part1);
    385             drawPartLine(A,F,_part2);
    386             drawPartLine(F,E,_part2);
    387             drawPartLine(A,E,_part2);
    388             drawPartLine(G,C,_part2);
    389             
    390             _tA1.x = getPointByExtension(getMidpoint(D,F),A).x-_tA.width*0.5;
    391             _tA1.y = getPointByExtension(getMidpoint(D,F),A).y-_tA.height*0.5;
    392             _tB1.x = getPointByExtension(G,B,25).x-_tA.width*0.5;
    393             _tB1.y = getPointByExtension(G,B,25).y-_tA.height*0.5;
    394             var extensionC:Point = getPointByExtension(getMidpoint(A,G),getC(),30);
    395             getC().x > G.x ? _tC1.x = extensionC.x + 5-_tA.width*0.5:_tC1.x = extensionC.x - 5-_tA.width*0.5;
    396             getC().y > G.y ? _tC1.y = extensionC.y + 5-_tA.height*0.5:_tC1.y = extensionC.y - 5-_tA.height*0.5;;
    397             _tD1.x = getPointByExtension(getMidpoint(A,F),D).x-_tA.width*0.5;
    398             _tD1.y = getPointByExtension(getMidpoint(A,F),D).y-_tA.height*0.5;;
    399             _tE1.x = getPointByExtension(A,E).x-_tA.width*0.5;
    400             _tE1.y = getPointByExtension(A,E).y-_tA.height*0.5;;
    401             _tF1.x = getPointByExtension(getMidpoint(A,D),F).x-_tA.width*0.5;
    402             _tF1.y = getPointByExtension(getMidpoint(A,D),F).y-_tA.height*0.5;;
    403             _tG1.x = getPointByExtension(B,G,25).x-_tA.width*0.5;
    404             _tG1.y = getPointByExtension(B,G,25).y-_tA.height*0.5;;
    405             
    406             __tA1.x = _tA1.x;
    407             __tA1.y = _tA1.y;
    408             __tC1.x = _tC1.x;
    409             __tC1.y = _tC1.y;
    410             __tE1.x = _tE1.x;
    411             __tE1.y = _tE1.y;
    412             
    413             function drawPartLine(p1:Point,p2:Point,sp:Sprite):void
    414             {
    415                 sp.graphics.lineStyle(2,0xffffff);
    416                 sp.graphics.moveTo(p1.x,p1.y);
    417                 sp.graphics.lineTo(p2.x,p2.y);
    418             }
    419         }
    420         private function overlap(sp1:Sprite,sp2:Sprite):void
    421         {
    422             Tweener.addTween(sp1,{x:this.x,y:this.y,time:0.8,transition:"linear"});
    423             Tweener.addTween(sp2,{x:this.x,y:this.y,time:0.8,transition:"linear"});
    424         }
    425         private function separate(sp1:Sprite,sp2:Sprite):void
    426         {
    427             var k_DF:Number = (D.y-F.y)/(D.x-F.x);//DF的k即BG的k
    428             var b_DF:Number = D.y - k_DF * D.x;//DF的b
    429             var oldY:Number = E.y;
    430             var oldX:Number = E.x;
    431             var offX1:Number;
    432             var offX2:Number;
    433             var offY1:Number;
    434             var offY2:Number;
    435             
    436             if (k_DF<1&&k_DF>-1) {//以x方向为标准
    437                 if (D.x < F.x) {
    438                     offX1 = -39;
    439                     offX2 = 38;
    440                 } else {
    441                     offX1 = 39;
    442                     offX2 = -38;
    443                 }
    444                 oldY = k_DF * (oldX + offX1) + b_DF;
    445                 offY1 = oldY - E.y;
    446                 Tweener.addTween(sp1,{x:this.x+offX1,y:this.y+offY1,time:0.8,transition:"linear"});
    447                 oldY = k_DF * (oldX + offX2) + b_DF;
    448                 offY2 = oldY - E.y;
    449                 Tweener.addTween(sp2,{x:this.x+offX2,y:this.y+offY2,time:0.8,transition:"linear"});
    450             } else {
    451                 if (D.y < F.y) {
    452                     offY1 = -39;
    453                     offY2 = 38;
    454                 } else {
    455                     offY1 = 39;
    456                     offY2 = -38;
    457                 }
    458                 oldX = (oldY+offY1-b_DF)/k_DF;
    459                 offX1 = oldX - E.x;
    460                 Tweener.addTween(sp1,{x:this.x+offX1,y:this.y+offY1,time:0.8,transition:"linear"});
    461                 oldX = (oldY+offY2-b_DF)/k_DF;
    462                 offX2 = oldX - E.x;
    463                 Tweener.addTween(sp2,{x:this.x+offX2,y:this.y+offY2,time:0.8,transition:"linear"});
    464             }
    465         }
    466         
    467         private function getB(y:Number):Point
    468         {
    469             var k_AD:Number = (A.y-D.y)/(A.x-D.x);
    470             var b_AD:Number = A.y - k_AD * A.x;
    471             if (A.x == D.x) {
    472                 B.x = A.x;
    473                 B.y = y;
    474             } else {
    475                 B.y = y;
    476                 B.x = (B.y-b_AD)/k_AD;
    477             }
    478             
    479             return B;
    480         }
    481         private function getC():Point
    482         {
    483             if(B.x == G.x||A.x == E.x) return C;
    484             var k1:Number = (B.y-G.y)/(B.x-G.x);
    485             var b1:Number = B.y - k1 * B.x;
    486             
    487             var k2:Number = (A.y-E.y)/(A.x-E.x);
    488             var b2:Number = A.y - k2 * A.x;
    489             if(k1==k2){
    490                 C.y = A.y;
    491                 C.x = E.x;
    492                 return C;
    493             }
    494             if (B.x == G.x) {
    495                 C.x = B.x;
    496                 C.y = B.y;
    497                 return C;
    498             } else {
    499                 if (A.x == E.x) {
    500                     C.x = A.x;
    501                     C.y = k1 * C.x + b1;
    502                 } else {
    503                     C.x = (b2 - b1) / (k1 - k2);
    504                     C.y = k2 * C.x + b2;
    505                 }
    506                 return C;
    507             }
    508             
    509             C.x = (b2 - b1) / (k1 - k2);
    510             C.y = k2 * C.x + b2;
    511             
    512             return C;
    513         }
    514         /** 
    515          * 获取线段延长线上的某点point
    516          * @param    p1 线段上较point的近端点
    517          * @param    p2 线段上较point的远端点
    518          * @param    r point近端点到point的距离
    519          * @return
    520          */
    521         private function getPointByExtension(p1:Point,p2:Point,r:Number = 20):Point
    522         {
    523             var point:Point = new Point();
    524             var a:Number = Math.atan2(p2.y - p1.y,p2.x - p1.x);
    525             point.y = r * Math.sin(a) + p2.y;
    526             var k:Number = (p1.y-p2.y)/(p1.x-p2.x);
    527             var b:Number = p1.y - k * p1.x;
    528             if(p1.x==p2.x){
    529                 point.x = p1.x;
    530                 return point;
    531             }
    532             if (p1.y == p2.y) {
    533                 p2.x>p1.x?(point.x = p2.x+20):point.x = p2.x-20;
    534                 point.y = p2.y;
    535                 return point;
    536             }
    537             if (p1.x == p2.x) {
    538                 point.x = p2.x;
    539                 p2.y > p1.y ? point.y = p2.y + 20:point.y = p2.y - 20;
    540             }
    541             point.x = (point.y-b)/k;
    542             return point;
    543         }
    544         /**
    545          * 获取线段的中点
    546          * @param    p1
    547          * @param    p2
    548          * @return
    549          */
    550         private function getMidpoint(p1:Point,p2:Point):Point
    551         {
    552             return new Point(p1.x+(p2.x-p1.x)*0.5,p1.y+(p2.y-p1.y)*0.5);
    553         }
    554         /**
    555          * 同一直线上的三个点,判断p是否在p1和p2之间
    556          * @param    p
    557          * @param    p1
    558          * @param    p2
    559          * @return
    560          */
    561         private function isBetween(p:Point,p1:Point,p2:Point):Boolean
    562         {
    563             if (Point.distance(p1,p) < Point.distance(p1,p2) && Point.distance(p2,p) < Point.distance(p1,p2)) {
    564                 return true;
    565             }
    566             return false;
    567         }
    568         private function getTextField(text:String,parent:Sprite,x:Number=0,y:Number=0):TextField
    569         {
    570             var textField:TextField = new TextField();
    571             textField.autoSize = "left";
    572             textField.selectable = false;
    573             textField.mouseEnabled = false;
    574             _tf.italic = true;
    575             textField.defaultTextFormat = _tf;
    576             textField.text = text;
    577             textField.x = x;
    578             textField.y = y;
    579             parent.addChild(textField);
    580             return textField;
    581         }
    582         private function getButton(text:String,parent:Sprite,x:Number=0,y:Number=0):TextField
    583         {
    584             var textButton:TextField = new TextField();
    585             textButton.width = 110;
    586             textButton.height = 38;
    587             textButton.selectable = false;
    588             textButton.border = true;
    589             textButton.borderColor = 0x999999;
    590             textButton.background = true;
    591             textButton.backgroundColor = 0x333333;
    592             _tf.align = TextFormatAlign.CENTER;
    593             textButton.defaultTextFormat = _tf;
    594             textButton.htmlText = "<a href='event:#'>"+text+"</a>";
    595             textButton.x = x;
    596             textButton.y = y;
    597             parent.addChild(textButton);
    598             return textButton;
    599         }
    600         private function getDot(radius:Number,parent:Sprite,name:String="",x:Number=0,y:Number=0):Sprite
    601         {
    602             var dot:Sprite = new Sprite();
    603             dot.graphics.lineStyle(2,0xffffff);
    604             dot.graphics.beginFill(0x00ff00);
    605             dot.graphics.drawCircle(0,0,radius);
    606             dot.graphics.endFill();
    607             dot.x = x;
    608             dot.y = y;
    609             dot.name = name;
    610             parent.addChild(dot);
    611             return dot;
    612         }
    613     }
    614 }
  • 相关阅读:
    0802作业1替换文本文件内容

    看病
    爬山
    作业1
    超市(未完成)
    图片复制
    替换
    文件
    英文字母和中文汉字在不同字符集编码下的字节数
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4775497.html
Copyright © 2011-2022 走看看