flash on 2014-12-25

by mutantleg
♥0 | Line 109 | Modified 2014-12-25 11:03:25 | 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/z6cU
 */

package {
    import flash.ui.Keyboard;
    import flash.events.KeyboardEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
           vecRoom = new Vector.<xRoom>(0, false);
           var a:xRoom; var i:int;
           var ax:Number; var ay:Number;
           ax = 0; ay = 0;
           for (i = 0; i < 16; i++)
           {
             a = new xRoom();
             a.cx = ax;   a.cy = ay;
             a.cw = 160; a.ch = 120;
             if (Math.random()<0.25)
             {
                 a.cw = Math.random() <0.5 ? 320 : 160;
                 a.ch = Math.random() < 0.5? 120 :240;
             }
             vecRoom.push(a);
             
             
             var n:int;
             var k:int; var b:xBlob;
             n = 4 + Math.random() * 8;
             for (k = 0; k < n; k++)
             {
                 b = new xBlob();
                  b.cx = a.cx + Math.random() * a.cw;
                  b.cy = a.cy + Math.random() * a.ch;
                a.vecBlob.push(b); 
             }//nextk
             
             
             if (Math.random()<0.5) {ax+=a.cw;}
             else {ay+=a.ch;}
           }//nexti
            
           stage.addEventListener(KeyboardEvent.KEY_DOWN, onKdown); 
           stage.addEventListener(Event.ENTER_FRAME, onEnter); 
        }//ctor
        
        public function onKdown(e:KeyboardEvent):void
        {
            var ms:Number;
            ms = 64;
            if (e.keyCode == Keyboard.DOWN) { cy+=ms;}
            if (e.keyCode == Keyboard.UP) { cy-=ms;}
            if (e.keyCode == Keyboard.LEFT) { cx-=ms;}
            if (e.keyCode == Keyboard.RIGHT) { cx+=ms;}
            
        }//onkdown
        
        
        public var vecRoom:Vector.<xRoom>;
        
        public var camx:Number = 0;
        public var camy:Number = 0;
        public var cx:Number = 80;
        public var cy:Number = 60;
        
        public function isOver(ax:Number,ay:Number,aw:Number,ah:Number):Boolean
        {
            if (cx < ax) { return false; }
            if (cy < ay) { return false; }
            if (cx > ax+aw) { return false; }
            if (cy > ay+ah) { return false; }
            return true;
        }//isover
        
        
        public function onEnter(e:Event):void
        {
          graphics.clear();
          graphics.lineStyle(2, 0);
          
          camx = cx - 230; camy = cy - 230;
          
          var sx:Number; var sy:Number;
          sx = Math.floor(camx); sy = Math.floor(camy);  
            
            var i:int; var num:int;     var a:xRoom;             
            num = vecRoom.length;
            for (i = 0; i < num; i++)
            {
                a = vecRoom[i];
                if (isOver(a.cx,a.cy,a.cw,a.ch) )
                {
                  graphics.beginFill(0xa0a0a0, 1);
                  graphics.drawRect(a.cx-sx,a.cy-sy,a.cw,a.ch);
                  graphics.endFill();
                  upBlob(a.vecBlob,sx,sy);
 
                  continue;
                }
                
                graphics.drawRect(a.cx-sx,a.cy-sy,a.cw,a.ch);
            }//nexti

           graphics.drawCircle(cx-sx,cy-sy,4);

        }//onenter
        
        
        public function upBlob(vec:Vector.<xBlob>, sx:Number, sy:Number):void
        {
            var i:int; var num:int; var a:xBlob;
            num = vec.length;
            for (i = 0; i < num; i++)
            {
              a = vec[i];
              graphics.drawCircle(a.cx-sx,a.cy-sy, 5);  
            }//nexti
        }//upblob
        
        
    }//classend
}

internal class xRoom
{
   public var cx:Number = 0;
   public var cy:Number = 0;
   public var cw:Number = 320;
   public var ch:Number = 240;   
   public var vecBlob:Vector.<xBlob> = new Vector.<xBlob>(0,false);
}//xroom

internal class xBlob
{
   public var cx:Number = 0;
   public var cy:Number = 0; 
}//xblob