flash on 2015-6-2

by mutantleg
♥0 | Line 77 | Modified 2015-06-02 06:07:57 | 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/k1UGO
 */

package {
    import flash.geom.ColorTransform;
    import flash.geom.Rectangle;
    import flash.geom.Matrix;
    import flash.display.BitmapData;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {

            stage.quality = "LOW";

            skin  = new BitmapData(64,64, true, 0);    
            
           var i:int;
           /*
           for (i = 0; i < 16; i++)
           {
               fillRect(skin, Math.random()*64,Math.random()*64, Math.random()*24,Math.random()*24,0xFF808080);
               fillRect(skin, Math.random()*64,Math.random()*64, Math.random()*24,Math.random()*24,0xFF000000 );
               
           }//nexti     */
          // fillRect(skin, 8,8,32,32, 0xFF000000);
           fillRect(skin, 12,12,24,24, 0xFF000000);
           
           skinTeam = skin.clone();
           skinTeam.colorTransform(skinTeam.rect, new ColorTransform(1,1,1,1, 255,255,255,0));
           
           for (i = 0; i < 32; i++)
           {
               fillRect(skin, Math.random()*64,Math.random()*64, Math.random()*16,Math.random()*8,0);
           }//nexti     
            
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
        public var canvas:BitmapData = new BitmapData(465,465, false, 0);
    
        public var skinTeam:BitmapData; 
        public var skin:BitmapData; 
    
        public var gt:int = 0;
        
        public var ct:ColorTransform = new ColorTransform();
    
        public function onEnter(e:Event):void
        {
            
            canvas.unlock();
             canvas.lock();
             canvas.fillRect(canvas.rect, 0xff202020);

            var ax:Number; var ay:Number;
            var k:int; var i:int;

            for (i =0; i<16;i++)
            for (k =0; k < 16; k++)
            {
              ax = k*32; ay = i*32 + Math.sin(k+gt*0.3)*16;  
              ct.redMultiplier = i/16;
              ct.greenMultiplier = k/16;
              ct.blueMultiplier = Math.sin(gt*0.1);
             drawSprite2(canvas, skinTeam, ax,ay,0,false,false,1,1,null,ct,false);             
             drawSprite2(canvas, skin, ax,ay,0);
            }//nextk
             
           graphics.clear();
           graphics.beginBitmapFill(canvas,null,false,false);
           graphics.drawRect(0,0,465,465); 
           graphics.endFill();
            
            gt += 1;
        }//onenter
        
        public var tempMat:Matrix = new Matrix();
        public var mirMat:Matrix = new Matrix();

         public var tempRect:Rectangle = new Rectangle(0,0,0,0);  
        public function fillRect(to:BitmapData, ax:Number, ay:Number, aw:Number, ah:Number, c:uint):void
        {
           ax |= 0; ay |= 0;
            tempRect.x = ax; tempRect.y = ay;        tempRect.width = aw; tempRect.height = ah;
            to.fillRect(tempRect, c);
        }//drawrect

       public function drawSprite2(to:BitmapData, spr:BitmapData, ax:Number, ay:Number,
        ang:Number = 0, xmir:Boolean = false, ymir:Boolean = false,
        scalex:Number = 1.0, scaley:Number = 1.0,
        blend:String = null, trans:ColorTransform=null, smooth:Boolean=false):void
         {
              var aw:Number;        var ah:Number;         var rad:Number;
              rad = spr.width > spr.height ? spr.width : spr.height;     
              if (to.width < ax - rad) { return; }        if (to.height < ay - rad) { return; }
              if (0 > ax + rad) { return; }        if (0 > ay + rad) { return; }
              aw = spr.width * 0.5;        ah = spr.height * 0.5;      
              mirMat.identity();  
              mirMat.tx = -aw; mirMat.ty = -ah;
              //fix (should mirror before rotate -- (how this affects xy scale?) (seems to be ok)
              mirMat.scale(xmir? -scalex:scalex, ymir? -scaley:scaley );  
              mirMat.rotate(ang);        
              mirMat.translate( ax, ay );  
              to.draw(spr, mirMat, trans, blend, null, smooth); 
         }//drawsprite2

     
     
        
    }//classend
}