flash on 2012-1-12

by mutantleg
♥2 | Line 350 | Modified 2012-01-13 18:57:36 | 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/3pnn
 */

package {
    import flash.events.KeyboardEvent;
    import flash.accessibility.Accessibility;
    import flash.accessibility.AccessibilityImplementation;
    import flash.display.AVM1Movie;//FlashTest
    import flash.geom.Rectangle;
    import flash.events.Event;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    
    /*
         
    
        CONTROLS: ARROW KEYS
    
    */
    
    
    
    [SWF(backgroundColor=0xFFFFFF,frameRate=60)]     
    
    public class FlashTest extends Sprite {
       
       public var canvas:BitmapData;
       public var pic:Bitmap;
      // public var vecActor:Vector.<cActor>;
      
       
       //public var wa:cWorld;
       public var mgame:cGame;
       
        public function FlashTest() {
            // write as3 code here..
            
            canvas = new BitmapData(400,400,false,0);
            pic = new Bitmap(canvas);
          //  canvas.noise(0);
           // canvas.fillRect(canvas.rect, 0);     
                addChild(pic);
                
             //vecActor = new Vector.<cActor>();
             
             //wa = new cWorld();
             mgame = new cGame();
             
             init();
             
             //canvas = pic.bitmapData;
             // canvas.fillRect(canvas.rect, 0);     
             // pic.x = 40;
            
            //important to add them to stage
            stage.addEventListener(KeyboardEvent.KEY_DOWN, kdown);
            stage.addEventListener(KeyboardEvent.KEY_UP, kup);    
                
            addEventListener(Event.ENTER_FRAME, onEnter);
        }//flashtestAccessibility
        
        public function kdown(e:KeyboardEvent):void
        {
         cKeyMan.setKey(e.keyCode, true);   
        }//kdown
        
        public function kup(e:KeyboardEvent):void
        {
          cKeyMan.setKey(e.keyCode, false);  
        }//kup
        
        public function init():void
        {
            var i:int;
            var num:int;
            var a:cActor;
            
            num = 100;
            
            for (i = 0; i < num; i++)
            {
                a = new cActor();
                    a.cx = Math.random()*400;
                    a.cy = Math.random()*400;
                    a.vx = Math.random() - Math.random();
                    a.vy = Math.random() - Math.random();
                    a.xrad = Math.random() * 8;
                    a.yrad = Math.random() * 8;
                        //wa.addActor(a);
                        mgame.addActor(a);
            }//nexti
            
            a = new aPlayer();
            //wa.addActor(a);
            mgame.addActor(a, 2);
        }//init
        
     
        
        public function onEnter(e:Event):void
        {
            //upActor();
            //wa.update();
            mgame.update();
            canvas.fillRect(canvas.rect, 0);
            
            canvas.lock();
      
                draw(canvas);
            canvas.unlock();
        }//onenter
        
        public function draw(to:BitmapData):void
        {
          to.fillRect(to.rect, 0);  
            
            mgame.draw(to);
            //wa.drawActor(to);
          //drawActor(to);    
            
        }//draw
        
        
        
            
       
        
    }//flashtest

    
  

}
import flash.display.AVM1Movie;//package

    import flash.geom.Rectangle;
    import flash.events.Event;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    
    
   internal class cKeyMan
   {
       public function cKeyMan() {}//ctor (unused)
       
       public static var vecKey:Vector.<Boolean> = new Vector.<Boolean>(512,true);
       
       public static function setKey(k:int, b:Boolean):void
       {
           if (k < 0) return;
           if (k >= 512) return;
           vecKey[k] = b;
       }//setkey
       
       public static function isKeyDown(k:int):Boolean
       {
           if  (k < 0) return false;
           if (k >= 512) return false;
           return vecKey[k];
       }//iskey
       
   }//keyman 
    
    
 internal class cGame
 {
     
     public static var game:cGame; //singleton
     public function cGame()
     {
         game = this; //set singleton
         
         wa = new cWorld();
         wbull = new cWorld();
         wp = new cWorld();
     }//cgame
     
     public var wa:cWorld;
     public var wp:cWorld;
     public var wbull:cWorld;
     
     public function draw(to:BitmapData):void
     {
        wa.draw(to);
        //wp.draw(to);
        wbull.draw(to); 
        wp.draw(to);
     }//draw
     
     public function update():void
     {
        wa.update();
        wp.update();
        wbull.update(); 
     }//update
     
     
     public function getWorld(w:int):cWorld
     {
         switch  (w)
         {
             case 0:
             default:
              return wa;
             break;
             
             case 1:
              return wbull;   
             break;
             
             case 2:
              return wp;
             break;
             
          }//swend
          return null;
     }//getworld
     
     public function getPlayBullWorld():cWorld
     {
       return wbull;  
     }//getpbullworld
     
     public function addActor(a:cActor, t:int=0):void
     {
         if (a == null) return;
         var ww:cWorld;
         ww = getWorld(t);
         if (ww == null) return;
         ww.addActor(a);
     }//addactor
     
 }//game
 
    
 internal class cWorld
 {
      public var vecActor:Vector.<cActor>;
     
     
     public function cWorld()
     {
         vecActor = new Vector.<cActor>;
     }//ctor
     
        public function addActor(a:cActor):void
        {
           if (a == null) return;
           vecActor.push(a); 
        }//addactor
      
     public function update():void
     {
         upActor();
     }//update  
        
     public function draw(to:BitmapData):void
     {
        drawActor(to); 
     }//draw
        
        
     public function drawActor(to:BitmapData):void
        {
            var i:int;
            var num:int;
            var a:cActor;
            
            num = vecActor.length;
            
            for (i = 0; i < num; i++)
            {
              a = vecActor[i];
                if (a.bDead) continue;  
                if (!(a.bVisible)) continue;
                 a.draw(to);
            }//nexti
            
        }//drawactor
        
        
        public function upActor():void
        {
            var i:int;
            var num:int;
            var a:cActor;
            var bFoundDead:Boolean = false;
            
            num = vecActor.length;
            
            for (i = 0; i < num; i++)
            {
              a = vecActor[i];
                if (a.bDead) { bFoundDead = true; continue;  }
                 a.update();
            }//nexti
            
            if (bFoundDead) remDead();
            
        }//upactor
         
        public function remDead():void
        {
            var i:int;
            var num:int;
            var a:cActor;
            
            num = vecActor.length;
            
            for (i = 0; i < num; i++)
            {
                a = vecActor[i];
                if (!(a.bDead)) continue;
                
                vecActor[i] = vecActor[num - 1];
                num = vecActor.length;
                i-=1;
                vecActor.pop();
                
            }//nexti
        }//remdead
     
 }//world 
    

    
    
 internal class cActor
  {
      public var cx:Number = 0;
      public var cy:Number = 0;
      public var vx:Number = 0;
      public var vy:Number = 0;
      
      public var xrad:Number = 4;
      public var yrad:Number = 4;
      
      public var hp:Number = 10;
      
      public var team:int = 0;
      public var color:int = 0;
      
      public var bDead:Boolean = false;
      public var bVisible:Boolean = true;
      
      public function cActor()
      {      
          color = Math.random() * 0xffFFffFF;
      
       }//ctor
       
       
      public function makeActor(a:cActor, t:int):void
      {
          if (cGame.game == null) return;
          cGame.game.addActor(a, t);
     }//makeact
      
      public function isOver(a:cActor):Boolean
      {
          if (cx +xrad < a.cx -a.xrad) return false;
          if (cx-xrad > a.cx + a.xrad) return false;
          if (cy + yrad < a.cy - a.yrad) return false;
          if (cy - yrad > a.cy + a.yrad) return false;
          return true;
      }//isover
 
      public function col(a:cActor):Boolean
      {
          return false;
       }//col
 
      public function checkColWorld(w:cWorld):void
      {
          if ( w == null) return;
        
          
          var vec:Vector.<cActor>;
          var i:int;
          var num:int;
          var a:cActor;
          
          vec = w.vecActor;
          num = vec.length;
          
          for (i = 0; i < num; i++)
          {
              a = vec[i];
              if (a.bDead) continue;
              if (a == this) continue;
              if (a.team == team) continue;
              if (isOver(a)) 
              { if (!(col(a)) ) return; } 
          }//nexti
          
      }//checkcworld     
      
      
      
      public function kill():void
      {
        bDead = true;  
      }//kill
      
      public static var drect:Rectangle = new Rectangle();
      public function draw(to:BitmapData):void
      {
          drect.x = cx - xrad;
          drect.y = cy - yrad;
          drect.width = xrad + xrad;
          drect.height = yrad + yrad;
        
          to.fillRect(drect, color);
      }//draw
      
      public function update():void
      {
        cx += vx;
        cy += vy;   
        if (cx < 0 && vx < 0) vx = -vx;
        else if (cx > 400 && vx > 0) vx = -vx;
        if (cy < 0 && vy < 0) vy = -vy;
        else if (cy > 400 && vy > 0) vy = -vy;
      }//update
  }//actor  
    
 internal class apBull extends cActor
 {
     
     public function apBull()
     {
         super();

         xrad = 2;
         yrad = 4;
         hp = 100;
         color = 0xFF00FFFF;
      }//ctor
     
     override public function update():void
     {
        cx += vx;
        cy += vy;
        hp -= 1; 
        if (hp <= 0) {bDead = true; return;}
        if (cy < 0) {bDead = true; return;} 
        
        checkColWorld(cGame.game.getWorld(0));
     }//update
     
     override public function col(a:cActor):Boolean
     {
        kill(); 
        a.kill();
         
         return false;
     }//col
     
 }//apbull    
    
    
  internal class aPlayer extends cActor
 {
     
     public function aPlayer()
     {
         super();
         
         xrad = 16;
         yrad = 16;
         color = 0xFFFF0000;
         cx = 200;
         cy = 300;
         team = 2;
     }//aplayer
     
     public var reload:int = 0;
     
     override public function update():void
     {
         
         //firing
         if (reload > 0) reload -=1;
         
         if (cKeyMan.isKeyDown(38) && reload <= 0 )
         {
             reload = 10;
            var a:apBull;
            a= new apBull();
            a.cx = cx;
            a.cy = cy;
            a.vy = -8;
            a.team = team;
            makeActor(a,1);
         }//endif

         
         
         //movement
         vx = 0
         //ref
         //http://www.dakmm.com/?p=272
         if (cKeyMan.isKeyDown(39)) vx = 8;
         else if (cKeyMan.isKeyDown(37)) vx = -8;

        if (vx > 0 && cx >= 400-xrad) {vx =0; cx = 400-xrad; }
        else if (vx < 0 && cx < xrad) {vx = 0; cx = xrad;} 
       
         cx += vx;
         cy += vy;
         
     }//update
     
     
 }//aplayer