flash on 2015-3-14

by mutantleg
♥0 | Line 75 | Modified 2015-03-14 21:52:32 | 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/7LW3P
 */

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

            skin = new BitmapData(64,64,true,0);
            
            graphics.beginFill(0x808080,1);
            graphics.drawCircle(32,32, 32);
            graphics.endFill();
            
            graphics.beginFill(0x80,0.5);
            graphics.drawCircle(50,32, 8);
            graphics.endFill();
            
            
            skin.draw(this);
            
      
           stage.addEventListener(Event.ENTER_FRAME, onEnter);    
        }//ctor
        
        public var canvas:BitmapData = new BitmapData(465, 465, false, 0);
        public var skin:BitmapData;
        
        public var gt:int = 0;
        public var ang:Number = 0;
        
        public var cx:Number = 130;
        public var cy:Number = 130;
        public var vx:Number = 0;
        public var vy:Number = 0;
        
        
        public function onEnter(e:Event):void
        {
            
            var mx:Number; var my:Number;
            mx = stage.mouseX; my = stage.mouseY;
            
            gt += 1;
            
            
            //ang += 0.02;
            var sx:Number;
            var sy:Number;
            var u:Number;
            u = Math.sin(gt*0.1)*0.5;
            sx = u + 1;
            sy = 1-u;
        
        
            if (u < 0) 
             { ang = Math.atan2(my-cy,mx-cx); }
            
            var ms:Number;
            ms = 1;
            if (u > 0) { ms *= 1;}
            else { ms *= 0.25; }
            
            { vx += Math.cos(ang)*ms; vy+=Math.sin(ang)*ms; }
            
            vx *= 0.8;
            vy *= 0.8;
            cx+=vx; cy+=vy;
            
            canvas.fillRect(canvas.rect, 0);
         
            drawSprite2(canvas, skin, cx, cy, ang,false,false, sx, sy); 
         
            canvas.unlock();          
            canvas.lock();
            
            graphics.clear();
            graphics.lineStyle(2, 0);
            
            graphics.beginBitmapFill(canvas, null,false,false);
             graphics.drawRect(0,0,465,465);
            graphics.endFill();
            
        }//onenter
         
     public var mirMat:Matrix = new Matrix(1, 0, 0, 1, 0, 0);

     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):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;
          mirMat.scale(xmir? -scalex:scalex, ymir? -scaley:scaley );  
          mirMat.rotate(ang);        
          mirMat.translate( ax, ay );  
          to.draw(spr, mirMat, trans, blend, null, false); 
     }//drawsprite2
        
    }//classend
}