flash on 2015-12-20

by mutantleg
♥0 | Line 108 | Modified 2015-12-20 08:09:01 | 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/iwF1
 */

package {
    import flash.display.Sprite;
    import flash.display.Stage;
    import flash.display.StageQuality;
    import flash.geom.Rectangle;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.display.BitmapData;
    import net.hires.debug.Stats;  
    
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
          stage.quality = StageQuality.LOW;
            
            addChild(new Stats());
            
         deb = new TextField();
          deb.width=320;
          deb.height=240;
          deb.mouseEnabled=false;
          addChild(deb);  
 

         skin = new BitmapData(64,64, true, 0);
         skin.perlinNoise(4,4, 12, 12, true,true,7);   
         skin.fillRect(new Rectangle(16,16,32,32), 0xFF000000); 
           
         graphics.clear();
         graphics.lineStyle(2, 0);   

          //drawTri(0,0,0,  128,0,0,  0,128,0);  
          //drawTri(0,128,0,  128,0,0, 128,128,0 );   

          //drawTri(0,0,8,  128,0,8,  0,128,8);  
          //drawTri(0,128,8,  128,0,8, 128,128,8 );   
          
          drawWall(120,0, 120, 64);

          drawRect(64,64,465-128,465-128);
            
//          graphics.drawCircle(120, 120, 64);  
            
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
   
        public var deb:TextField;
        public var skin:BitmapData;
        
        public var gt:int = 0;
        
        public var camx:Number = 0;
        public var camy:Number = 0;

        public function onEnter(e:Event):void
        {
          graphics.clear();
         // graphics.lineStyle(2, 0);
 

          graphics.beginBitmapFill(skin, null,true,false);
           graphics.drawRect(0,0,465,465);
          graphics.endFill();
 
          drawWall(120,0, 120, 64);

         //drawRect(64,64,465-128,465-128, -64);
 

          drawRect(64,64,465-128,465-128, 64);
 
          
          var mx:Number; var my:Number;
          mx = stage.mouseX; my = stage.mouseY;
          
          drawRect2(mx-32,my-32,64,64);  
          
          
          var ax:Number; var ay:Number;
          var ta:Number;
          var i:int;
          for (i=0;i<16;i+=1)
          {
             ta = i*(6.28/16) + (gt*0.01);
             ax = 235 + Math.cos(ta)*96;
             ay = 235 + Math.sin(ta)*96;
             drawRect2(ax-16,ay-16, 32,32);
              
          }//nexti
            
            gt+=1;
            
        }//onenter

        
        
        public function drawRect(ax:Number,ay:Number, aw:Number,ah:Number, h:Number=16):void
        {
          drawWall(ax,ay,ax+aw,ay,h);  
          drawWall(ax,ay,ax,ay+ah,h);  
          drawWall(ax+aw,ay,ax+aw,ay+ah,h);  
          drawWall(ax,ay+ah,ax+aw,ay+ah,h);  
 
        }//drawrect
        
        public function drawRect2(ax:Number,ay:Number, aw:Number,ah:Number,h:Number=16):void
        {
          drawWall(ax,ay,ax+aw,ay,h);  
          drawWall(ax,ay,ax,ay+ah,h);  
          drawWall(ax+aw,ay,ax+aw,ay+ah,h);  
          drawWall(ax,ay+ah,ax+aw,ay+ah,h);  
            
          ax-=camx; ay-=camy;  
          drawQuad(ax,ay, h,  ax+aw,ay,h,  ax,ay+ah,h, ax+aw,ay+ah,h);  
        }//drawrect
        
        public function drawWall(x0:Number,y0:Number, x1:Number,y1:Number, h:Number=16):void
        {
         // drawTri(x0,y0, 0,  x1,y1, 0,  x0,y0, 16);  
         // drawTri(x0,y0, 16,  x1,y1,0,  x1,y1, 16);  

          x0-=camx; y0-=camy;
          x1-=camx; y1-=camy;
        
          drawQuad(x0,y0,0,  x1,y1,0,   x0,y0, h,  x1,y1, h); 
            
        }//drawwall
        

        public var vecFace:Vector.<int> = Vector.<int>([0,1,2, 2,1,3]);
        public var vecVert:Vector.<Number> = Vector.<Number>([0,0,  1,0,  0,1,  1,1]);
        public var vecUv:Vector.<Number> = Vector.<Number>([0,0,  1,0,  0,1,  1,1]);
    
        public function drawQuad(x0:Number, y0:Number, z0:Number,
         x1:Number,y1:Number,z1:Number, x2:Number,y2:Number,z2:Number,
         x3:Number,y3:Number,z3:Number):void
         {
          var ax:Number; var ay:Number;
          
          z0*=-0.01;  z1*=-0.01;  z2*=-0.01; z3*=-0.01;
          
          ax = 235-x0; ay = 235-y0;
          x0 = x0 + ax*z0;          
          y0 = y0 + ay*z0;
 
          ax = 235-x1; ay = 235-y1;
          x1 = x1 + ax*z1;
          y1 = y1 + ay*z1;
 
          ax = 235-x2; ay = 235-y2;
          x2 = x2 + ax*z2;
          y2 = y2 + ay*z2;
 
          ax = 235-x3; ay = 235-y3;
          x3 = x3 + ax*z3;
          y3 = y3 + ay*z3;
             
          vecVert[0] = x0;  vecVert[1] = y0; 
          vecVert[2] = x1;  vecVert[3] = y1;  
          vecVert[4] = x2;  vecVert[5] = y2; 
          vecVert[6] = x3;  vecVert[7] = y3; 
  
          graphics.beginBitmapFill(skin, null,false,false);
           graphics.drawTriangles(vecVert, vecFace ,vecUv);
          graphics.endFill();  
             
         }//drawquad
    
    
 /*   
        public function drawTri(x0:Number, y0:Number, z0:Number,
         x1:Number,y1:Number,z1:Number, x2:Number,y2:Number,z2:Number):void  
        {
          var ax:Number; var ay:Number;
          
          z0*=-0.01;  z1*=-0.01;  z2*=-0.01;
          
          ax = 235-x0; ay = 235-y0;
          x0 = x0 + ax*z0;
          y0 = y0 + ay*z0;
 
          ax = 235-x1; ay = 235-y1;
          x1 = x1 + ax*z1;
          y1 = y1 + ay*z1;
 
          ax = 235-x2; ay = 235-y2;
          x2 = x2 + ax*z2;
          y2 = y2 + ay*z2;
            
          vecVert[0] = x0;  vecVert[1] = y0; 
          vecVert[2] = x1;  vecVert[3] = y1;  
          vecVert[4] = x2;  vecVert[5] = y2; 
  
          graphics.beginBitmapFill(skin, null,false,false);
           graphics.drawTriangles(vecVert, null ,vecUv);
          graphics.endFill();  
            
        }//drawtri
*/        
        
        
        
    }//classend
}