flash on 2014-12-5

by mutantleg
♥0 | Line 150 | Modified 2014-12-05 06:25:20 | 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/cRVL
 */

package {
    import flash.text.TextField;
    import flash.ui.Keyboard;
    import flash.events.KeyboardEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
           var i:int;
           vecKey = new Vector.<Boolean>(0,false);
           for (i =0;i<512;i++) {vecKey.push(false);}
           
           curRecord = new xRecord();
   
           deb = new TextField();
           deb.width=320;
           deb.height=240;
           deb.mouseEnabled=false;
           addChild(deb);
   
           stage.addEventListener(KeyboardEvent.KEY_UP, onKup);
           stage.addEventListener(KeyboardEvent.KEY_DOWN, onKdown);        
           stage.addEventListener(Event.ENTER_FRAME, onEnter); 
        }//ctor
        
        public function onKup(e:KeyboardEvent):void     { vecKey[e.keyCode] = false; }
        public function onKdown(e:KeyboardEvent):void { vecKey[e.keyCode] = true; } 
     
        public function isKeyDown(k:int):Boolean 
        { if (k < 0 || k >=512) {return false;} return vecKey[k]; }
     
        public var vecKey:Vector.<Boolean>;
        
        public var keyUp:Boolean = false;
        public var keyDown:Boolean = false;
        public var keyLeft:Boolean = false;
        public var keyRight:Boolean = false;
        
        public var prevKey:int = 0;
     
        public var curRecord:xRecord;   
        public var myAgent:xAgent;

        public var cx:Number = 230;
        public var cy:Number = 230;
        
        public var state:int = 0;
     
         public var deb:TextField;
     
        public function onEnter(e:Event):void
        {
            
          keyUp = isKeyDown(Keyboard.UP);
          keyDown = isKeyDown(Keyboard.DOWN);
          keyLeft = isKeyDown(Keyboard.LEFT);
          keyRight = isKeyDown(Keyboard.RIGHT);
          
          graphics.clear();
          graphics.lineStyle(2, 0);
          
          graphics.drawRect(32,32, 400,400);
            
          if (state ==1)
          {
            graphics.beginFill(0xFF0000,1); graphics.drawRect(40,40,32,32); graphics.endFill();     
          }  
            
          var curKey:int; 
          curKey = 0;
           if (keyUp) { curKey |= 1; }  
           if (keyDown) { curKey |= 2; }  
           if (keyLeft) { curKey |= 4; }  
           if (keyRight) { curKey |= 8; }  
          
           if (curKey != 0 && state == 0) {state = 1; }   
            
           if (state == 1)
           {  
            curRecord.addFrame(curKey, cx, cy); 
            curRecord.gt += 1;
           }
            
           if (curRecord.gt >= 60)
           {
              myAgent = new xAgent();
              myAgent.rec = curRecord;
              myAgent.rec.gt = 0;
              
             // deb.text = "" + curRecord.vecKey.length;
              
              curRecord = new xRecord();
              state = 2;
           }//endif
            
            
           if (keyUp) { cy-=8; } 
           if (keyDown) { cy+=8; } 
           if (keyLeft) { cx-=8; } 
           if (keyRight) { cx+=8; } 
            
           graphics.beginFill(0,1);
           graphics.drawCircle(cx,cy, 8);
           graphics.endFill();
           
           graphics.lineStyle(2, 0xFF0000);
           
           if (myAgent != null)
           {
             var f:xFrame;
             f = myAgent.rec.getFrame(myAgent.rec.gt);  
             deb.text = ""+f;
             if (f == null) { myAgent.rec.gt=0; return;}
             myAgent.rec.gt  += 1;     
             curKey = f.key;
     
            if (myAgent.rec.gt > myAgent.rec.vecKey.length)
             { 
               myAgent.rec.gt = 0;            
             }//endif
           
            keyUp = (curKey & 1) > 0;
            keyDown = (curKey & 2) > 0;
            keyLeft = (curKey & 4) > 0;
            keyRight = (curKey & 8) > 0;
                    
            myAgent.cx = f.cx;
            myAgent.cy = f.cy;        
                    
               if (keyUp) { myAgent.cy-=8; } 
               if (keyDown) { myAgent.cy+=8; } 
               if (keyLeft) { myAgent.cx-=8; } 
               if (keyRight) { myAgent.cx+=8; } 

              graphics.beginFill(0x800000,1);
               graphics.drawCircle(myAgent.cx,myAgent.cy, 8);
              graphics.endFill(); 
           }//myagent


            var vec:Vector.<xFrame>;    
            var i:int; var num:int;
            if (myAgent == null ) { vec = curRecord.vecKey;}
            else { vec = myAgent.rec.vecKey;}
            num = vec.length
            for (i = 0; i < num; i++)
            {
               f = vec[i];
               graphics.drawCircle(f.cx,f.cy,4);
            }//nexti               
       
            
            
        }//onenter
        
        
        
    }//classend
}

internal class xAgent
{
  public var rec:xRecord;
  
  public var cx:Number = 0;  
  public var cy:Number = 0;  
    
}//xagent

internal class xFrame
{
  public var cx:Number = 0;
  public var cy:Number = 0;
  public var key:int =0;  
    
}//frame


internal class xRecord
{
  public var vecKey:Vector.<xFrame> = new Vector.<xFrame>(0,false);
  public var gt:int = 0;
      
  public function addFrame(kflag:int, ax:Number, ay:Number):void
  {
    var a:xFrame;
    a =new xFrame();
    a.cx= ax; a.cy = ay;
    a.key = kflag;
    vecKey.push(a);   
  }//addkey    

  public function getFrame(t:int):xFrame
  {
    var a:xFrame;
    if (t < 0) { return vecKey[0]; }
    if (t >= vecKey.length) { return vecKey[vecKey.length-1]; }  
    a = vecKey[t];
    return a;
  }//getFrame
  
    
}//xrecord