flash on 2015-3-15

by mutantleg
part2 of
http://wonderfl.net/c/3hXI
♥0 | Line 92 | Modified 2015-03-15 08:20:03 | MIT License
play

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/aZJ4
 */

package {
    import flash.geom.Rectangle;
    import flash.display.BitmapData;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
            skin = new BitmapData(32,32, true, 0);
            skin.fillRect(skin.rect, 0xF0000088);
            skin.noise(42);            

            skin.fillRect(new Rectangle(0,8,32,16), 0xF00000FF);
            skin.fillRect(new Rectangle(0,12,32,7), 0xFFFFFFFF);
            
            var i:int; var num:int;
            num = vecPnt.length; 
            for (i =0; i < num; i+=2)
            {
             //vecPnt[i] = Math.random()*465;
            // vecPnt[i+1] = Math.random()*465;           
             vecPnt[i] =  235 + Math.sin(i*0.2)*128;
             vecPnt[i+1] = 235 + Math.cos(i*0.2)*128;           
             
            }//nexti

            stage.addEventListener(MouseEvent.CLICK, onClick);
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor

        
        public var skin:BitmapData;
        
        public function onClick(e:MouseEvent):void
        { cx = Math.random()*430; cy = Math.random() * 430; }

        public var vecVert:Vector.<Number> = new Vector.<Number>(12, false);
        public var vecUv:Vector.<Number> = new Vector.<Number>(12, false);
        
        public var vecPnt:Vector.<Number> = new Vector.<Number>(256, false);
        
        public function drawLineStrip(vec:Vector.<Number>, num:int, r:Number):void 
        {
            var i:int; var num:int;
            var ax:Number; var ay:Number;   var bx:Number; var by:Number;
            var ang:Number;   var ca:Number; var sa:Number;
            var u0:Number; var v0:Number;   var u1:Number; var v1:Number;
            u0 = 0; v0 = 0;    u1 = 1; v1 = 1;

            if (num > vec.length) { num = vec.length;}
            
                vecUv[0] = u0;     vecUv[1] = v0; //0 
                vecUv[2] = u0;     vecUv[3] = v1; //1
                vecUv[4] = u1;     vecUv[5] = v0; //2
                
                vecUv[6] = u1;     vecUv[7] = v0; //2
                vecUv[8] = u0;     vecUv[9] = v1; //1            
                vecUv[10] = u1;    vecUv[11] = v1; //3  
 
             var x0:Number; var y0:Number;
             var x1:Number; var y1:Number;
             var x2:Number; var y2:Number;
             var x3:Number; var y3:Number;
 
             ax=0;ay=0;  bx=0;by=0;
            for (i = 0; i < num; i+=2)
            {
             if (i ==0)
              {  bx = vec[0]; by = vec[i+1]; continue; } 
            
      
              ax = bx; ay = by;  
              x0=x2; y0 = y2;  x1=x3; y1 = y3;  

              bx = vec[i]; by = vec[i+1];
         
              ang = Math.atan2(by-ay, bx-ax);
              ca = Math.cos(ang) * r;    sa = Math.sin(ang) * r;
                 
                
              //graphics.drawCircle(vec[i],vec[i+1],r);  
              //graphics.moveTo(ax,ay);     graphics.lineTo(bx,by);

              if (i == 2)
              { x0 = ax+sa; y0 = ay-ca;   x1 = ax-sa; y1 = ay+ca; }
              x2 = bx+sa; y2 = by-ca;     x3 = bx-sa; y3 = by+ca;
              
         
                vecVert[0] = x0;     vecVert[1] = y0; //0 
                vecVert[2] = x1;     vecVert[3] = y1; //1
                vecVert[4] = x2;     vecVert[5] = y2; //2

                vecVert[6] = x2;     vecVert[7] = y2; //2
                vecVert[8] = x1;     vecVert[9] = y1; //1            
                vecVert[10] = x3;     vecVert[11] = y3; //3
   
   
             graphics.beginBitmapFill(skin);
             graphics.drawTriangles(vecVert,null,vecUv);      
             graphics.endFill();            
               
            }//nexti                     
            
        }//drawlinestrip 
        
        
        /*
        public function drawLine(ax:Number, ay:Number, bx:Number, by:Number, r:Number = 16):void
        {
            var ang:Number;   var ca:Number; var sa:Number;
            ang = Math.atan2(by-ay, bx-ax);
            ca = Math.cos(ang) * r;
            sa = Math.sin(ang) * r;
            
            var u0:Number; var v0:Number;
            var u1:Number; var v1:Number;
            u0 = 0; v0 = 0;
            u1 = 1; v1 = 1;
            
            
            vecVert[0] = ax + sa;     vecVert[1] = ay - ca; //0 
            vecVert[2] = ax - sa;     vecVert[3] = ay + ca; //1
            vecVert[4] = bx + sa;     vecVert[5] = by - ca; //2
            
            vecVert[6] = bx + sa;     vecVert[7] = by - ca; //2
            vecVert[8] = ax - sa;     vecVert[9] = ay + ca; //1            
            vecVert[10] = bx - sa;     vecVert[11] = by + ca; //3
            
            vecUv[0] = u0;     vecUv[1] = v0; //0 
            vecUv[2] = u0;     vecUv[3] = v1; //1
            vecUv[4] = u1;     vecUv[5] = v0; //2
            
            vecUv[6] = u1;     vecUv[7] = v0; //2
            vecUv[8] = u0;     vecUv[9] = v1; //1            
            vecUv[10] = u1;    vecUv[11] = v1; //3  

           // graphics.beginFill(0xFF, 1);
            graphics.beginBitmapFill(skin);
            graphics.drawTriangles(vecVert,null,vecUv);      
            graphics.endFill();            
        }//drawline
        */
        
        public var cx:Number =230;
        public var cy:Number = 230;
 
         public var gt:int = 0;
        
        public function onEnter(e:Event):void
        {
            graphics.clear();
            graphics.lineStyle(1, 0);

            var mx:Number; var my:Number;
            mx = stage.mouseX; my = stage.mouseY;

           // drawLine(cx, cy, mx, my, 16);            
 
           drawLineStrip(vecPnt, 32, 16);
 
             var i:int; var num:int;
            num = vecPnt.length; 
            for (i =0; i < num; i+=2)
            {
             vecPnt[i] =  235 + Math.sin((i+gt*0.1)*0.1)*128;
             vecPnt[i+1] = 235 + Math.cos((i+gt*0.1)*0.1)*128;           
             
            }//nexti
           gt+=1;
        }//onenter
        
    }//classend 
}