flash on 2014-10-3

by mutantleg
♥0 | Line 229 | Modified 2014-10-03 05:37:38 | 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/ur46
 */

package {
    import flash.text.TextField;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
       
        public function FlashTest() 
        {
       
          var a:xBtn;
          a = new xBtn();  a.x = 16;  a.y = 16;   a.mode = 1;  addChild(a);
          a = new xBtn();  a.x = 16;  a.y = 16+40; a.mode = 2;   addChild(a);
          a = new xBtn();  a.x = 16;  a.y = 16+80;  a.mode = 3;   addChild(a);
          a = new xBtn();  a.x = 16;  a.y = 16+120;  a.mode = 4;   addChild(a);
         
         
         vecRect = new Vector.<xRect>;
         
         vecCirc = new Vector.<xCirc>;
         
         deb = new TextField();
         deb.mouseEnabled = false; deb.width =320; deb.height = 240;
         addChild(deb);
         
         
          stage.addEventListener(MouseEvent.CLICK, mclick);
          stage.addEventListener(Event.ENTER_FRAME, onEnter);     
        }//ctor
        
        public static var cmode:int = 0;
        
        public function mclick(e:MouseEvent):void
        {
            if (stage.mouseX < 64) { return; }            
            if (tb == 0)  {return;}
                        
            cmode = 0;
            
            var a:xRect;
            a = new xRect();
            a.cx = tx;         a.cy = ty;
            vecRect.push(a);
            
            gold -= 15;
            
        }//mclick


        public var vecCirc:Vector.<xCirc>;        
        public var vecRect:Vector.<xRect>;
        public var tx:Number = 0;
        public var ty:Number = 0;
        public var tb:int = 0;
        
        public var px:Number = 0;
        public var py:Number = 0;

        public var gt:int = 0;
        
        

        public function isOver(ax:Number, ay:Number, aw:Number=0,ah:Number=0):Boolean
        {
          var i:int; var num:int; var a:xRect;
          num = vecRect.length;
          for (i = 0; i < num; i++)
          {
            a = vecRect[i];
            if (ax + aw < a.cx) { continue; }
            if (ay + ah < a.cy) { continue; }
            if (a.cx + a.cw < ax) { continue; }
            if (a.cy + a.ch < ay) { continue; } 
            return true;
          }//nexti  
          return false;   
        }//isover     
        
        public function getDist(ax:Number, ay:Number):Number
        {
            return Math.sqrt(ax*ax + ay*ay);
        }//getdist   
        
        public function getTarg(ax:Number, ay:Number, dist:Number):xCirc
        {
             
            var i:int; var num:int;  var a:xCirc;
            var mag:Number; var d:Number;
            var ret:xCirc;
            ret = null;
            mag = 999999999;
            
            num = vecCirc.length;
            for (i = 0; i < num; i++)
            {
              a = vecCirc[i];
              
              if (ax + dist < a.cx) { continue; }  
              if (ay + dist < a.cy) { continue; }
              if (ax - dist > a.cx) { continue; }
              if (ay - dist > a.cy) { continue; }
              
              d = getDist(ax-a.cx, ay-a.cy);
              if (d > mag) { continue;}
              mag = d; ret = a;
            }//nexti
            
            return ret;
        }//gettarg

        
        public var baseHp:Number = 8;
        public var baseSpeed:Number = 0.3;
        public var curHp:Number = 1;
        public var curSpeed:Number =1;
        public var wave:int = 0;
        
        public var baseFrag:Number = 8;
        public var curFrag:Number = 8;
        
        public var gold:Number = 75;
        public var frag:Number = 0;
        
        public var deb:TextField;

        
        public function onEnter(e:Event):void       
        {
            
            if (cmode > 0 && gold < 15) { cmode = 0; }
            
            curHp = baseHp + (wave);
            curSpeed = baseSpeed + (wave*0.02);
            curFrag = baseFrag + (wave*4);
           // deb.text = wave+":"+baseHp+":"+baseSpeed;
            deb.text = wave+":"+curHp.toFixed(0)+":"+curSpeed.toFixed(0)+":"+frag.toFixed(0)+":"+gold.toFixed(0);
            
            if (frag > curFrag) { wave += 1; }
            
            
            graphics.clear();
            graphics.lineStyle(2,0);
            graphics.drawRect(64,0,300,450);
           
           var mx:Number;        var my:Number;
           mx = stage.mouseX;
           my = stage.mouseY;
           
            
            
            graphics.lineStyle(2,0);
          
          var i:int; var num:int; var a:xRect; var b:xCirc;
          num = vecRect.length;
          for (i = 0; i < num; i++)
          {
            a = vecRect[i];
            
            a.ang += 0.1;

            if (a.reload < gt)
            {            
                b = getTarg(a.cx+16, a.cy+16,64);
                a.reload = gt + 5;
                if (b != null)
                {
                 graphics.moveTo(a.cx+16,a.cy+16);
                 graphics.lineTo(b.cx,b.cy);
                 b.hp -= 1;   
                 if (b.hp <= 0) { frag += 1; gold += 1 + (wave*0.5); }           
                    
                }//endif2
            }//endif
            
            graphics.beginFill(0, 0.5);
             graphics.drawRect(a.cx,a.cy,a.cw,a.ch);
            graphics.endFill();
            graphics.drawCircle(a.cx+16,a.cy+16,12);
            graphics.moveTo(a.cx+16,a.cy+16);
            graphics.lineTo(a.cx+16+Math.cos(a.ang)*14, a.cy+16+Math.sin(a.ang)*14);
          }//nexti
    
          
          num = vecCirc.length;
          
          for (i = 0; i < num; i++)
          {
            b = vecCirc[i];

            b.cx += b.vx;
            b.cy += b.vy;            
            
            if (b.cy >= 440) { b.hp = -1; }
            
            if (b.hp <= 0)
            {
                vecCirc[i] = vecCirc[num-1];
                vecCirc.pop();
                i -=1;
                num-=1
                continue;
            }//nexti
            
            graphics.beginFill(0,0.5);
             graphics.drawCircle(b.cx,b.cy,b.rad);
            graphics.endFill();
              
          }//nexti 
          
          px = 80 + Math.abs(Math.sin(gt*0.1)) *250;
          
          if (gt > 60)
          if (num < 16)
          if (gt % 10 == 0) 
          {
            b = new xCirc();
            b.cx = px;            b.cy = py;
            b.hp = curHp; b.vy = curSpeed;
            vecCirc.push(b);
          }//endif
    
    
    
           tx = ((mx/32)|0) * 32;
           ty = ((my/32)|0)*32;
           tb = 0;
           
           graphics.lineStyle(4,0,0.5);
            if (cmode > 0)
            {
                if (isOver(tx+8,ty+8,16,16) == false) { tb = 1;}
                else { tb =0; }
                
                if (tb ==0)
                { graphics.lineStyle(2, 0xFF0000); }
                graphics.drawRect(tx,ty,32,32);
                graphics.drawCircle(tx+16,ty+16,64);
            }//endif
    

          gt += 1;            
        }//onenter
        
        
    }//classend
}
import flash.events.MouseEvent;
import flash.display.Sprite;

internal class xRect
{
  public var cx:Number = 0;
  public var cy:Number = 0;
  public var cw:Number = 32;
  public var ch:Number = 32;  
  public var ang:Number = 0;
  public var reload:int = 0;  
    
}//xrect

internal class xCirc
{
  public var cx:Number = 0;
  public var cy:Number = 0;
  public var rad:Number = 8;
  public var ang:Number = 0;
  
  public var vx:Number = 0;
  public var vy:Number = 2;
    
  public var hp:Number = 12;  
    
}//xcirc



internal class xBtn extends Sprite
{
  public function xBtn()
  {
    graphics.clear();
    graphics.beginFill(0, 1);
      graphics.drawRect(0,0,32,32);
    graphics.endFill(); 
      
    alpha = 0.5;  
      
    this.buttonMode = true;   
    this.useHandCursor = true; 
    this.mouseChildren = false;  
      
    this.addEventListener(MouseEvent.ROLL_OVER, mover);
    this.addEventListener(MouseEvent.ROLL_OUT, mout);
    this.addEventListener(MouseEvent.CLICK, mclick);  
  }//xbtn  
  
  public var mode:int = 0;
  
  public function mclick(e:MouseEvent):void
  {
     if (FlashTest.cmode == mode) { FlashTest.cmode = 0; return;}
     FlashTest.cmode = mode; 
  }//mclick
  
  public function mover(e:MouseEvent):void
  {
    alpha = 1;
  }//mover
  
  public function mout(e:MouseEvent):void
  {
    alpha = 0.5;  
  }//mout
    
    
    
}//xbtn