flash on 2016-4-27

by mutantleg
♥0 | Line 99 | Modified 2016-04-27 01:27:56 | 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/6362
 */

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() {
           vecRect = new Vector.<xRect>(0,false); 
           vecRect.push(new xRect(0,0,16,16)); 
           vecRect.push(new xRect(0,16,32,16)); 
           vecRect.push(new xRect(32,16,16,16)); 
           vecRect.push(new xRect(48,16,32,16)); 
           vecRect.push(new xRect(32,32,16,16)); 
           vecRect.push(new xRect(48,32,16,32)); 
           vecRect.push(new xRect(0,32,32,32)); 
          
           stage.addEventListener(KeyboardEvent.KEY_DOWN, onKdown);
           stage.addEventListener(KeyboardEvent.KEY_UP, onKup);
           stage.addEventListener(Event.ENTER_FRAME, onEnter); 
        }//ctor
        
        public function onKdown(e:KeyboardEvent):void { vecKey[e.keyCode]=true; }
        public function onKup(e:KeyboardEvent):void { vecKey[e.keyCode]=false; }
        public function isKeyDown(k:int):Boolean { return vecKey[k]; }
        
        public var vecKey:Vector.<Boolean> = new Vector.<Boolean>(512,false);
                
        
        public var cx:Number = 235;
        public var cy:Number = 235;
        
        public var gx:Number = 0;
        public var gy:Number = 0;
        
        public var worldw:Number=256;
        public var worldh:Number=256;
        
        public var camx:Number = 0;
        public var camy:Number = 0;
        
        public var vecRect:Vector.<xRect>;
        
        
        public function getZone(ax:Number, ay:Number):xRect
        {
            var a:xRect; var i:int; var num:int;
            num = vecRect.length;
            for(i=0;i<num;i+=1)
            { a = vecRect[i];  
              if (ax < a.cx){ continue; }
              if (ay < a.cy){ continue; }
              if (ax > a.cx+a.cw){ continue; }
              if (ay > a.cy+a.ch){ continue; }
              return a;
            }//nexti              
            return null;
        }//getrect
        
        public var prevRect:xRect =null;
        
                
        public function onEnter(e:Event):void
        {
            graphics.clear();
            graphics.lineStyle(1, 0);
            
            var a:xRect; var i:int; var num:int;
            num = vecRect.length;
            for(i=0;i<num;i+=1)
            { a = vecRect[i];   graphics.drawRect(a.cx,a.cy,a.cw,a.ch); }  
            
            graphics.drawRect(0-camx,0-camy,worldw, worldh);
            graphics.drawCircle(cx-camx,cy-camy,16);
            
            camx =cx-235;
            camy =cy-235;
            
            var ax:Number;
            var ay:Number;
            ax = (cx/16)+gx;
            ay = (cy/16)+gy;
            
            graphics.drawCircle(ax,ay,4);
            
            graphics.lineStyle(2,0xFF);
            a = getZone(ax,ay);
            if (a!=null)
            { graphics.drawRect(a.cx,a.cy,a.cw,a.ch); }
      
              
            if (a!=null && a!=prevRect)
            {
              // var ox:Number; var oy:Number;
              // ax = a.cx*16; ay =a.cy*16;
              // ox=cx+ax; oy= cy-ay;
               
               prevRect=a;
//               cx=128;
//               cy=128;

               if (cx<0) { cx+= a.cw*16; }
               else if (cx >worldw){ cx-=worldw; }
               if (cy<0) { cy+= a.ch*16; }
               else if (cy >worldh){ cy-=worldh; }

               worldw = a.cw * 16;
               worldh = a.ch * 16; 
              camx =cx-235;
              camy =cy-235;
               gx=a.cx;
               gy=a.cy; 
               
            }//endif     
      
      
            var ms:Number; ms =8;
            if (isKeyDown(Keyboard.UP)) { cy-=ms; }
            if (isKeyDown(Keyboard.DOWN)) { cy+=ms; }
            if (isKeyDown(Keyboard.LEFT)) { cx-=ms; }
            if (isKeyDown(Keyboard.RIGHT)) { cx+=ms; }
                        
                        
                        
                        
        }//onenter
        
    }//classend
}

internal class xRect
{
  public function xRect(ax:Number,ay:Number,aw:Number,ah:Number)
  { cx=ax; cy=ay; cw=aw; ch=ah;  }  
  public var cx:Number = 0;
  public var cy:Number = 0;   
  public var cw:Number = 0;
  public var ch:Number = 0;
}//xrect