flash on 2014-10-18

by mutantleg
♥0 | Line 88 | Modified 2014-10-18 08:26:41 | 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/wC1x
 */

package {
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
            
            stage.addEventListener(MouseEvent.CLICK, onClick);
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
        public function onClick(e:Event):void
        {
            cx = stage.mouseX;
            cy = stage.mouseY;
            vx = 0;
            vy = 0;
            
        }//onclick
        
      //  public var testRect:xRect = new xRect(32,200,200, 40);
        
        public var vecRect:Vector.<xRect> = Vector.<xRect>([
        new xRect(32,200,200, 40),
               new xRect(32,20,200, 40), 
        new xRect(200,32,40,180),
        new xRect(20,32,40,180),
        new xRect(100,180,32,32),
        new xRect(100+20,180-10,32,16),
        new xRect(100+40,180-60,32,32)
        
         ]);
        
        public function isWall(ax:Number,ay:Number, aw:Number, ah:Number):Boolean
        {
            graphics.drawRect(ax,ay,aw,ah);
 
            var a:xRect;            var i:int;            var num:int;
             num = vecRect.length;
            for (i = 0; i < num; i++)
            {
              a = vecRect[i];  
               if (a.cx > ax+aw) { continue;}
               if (a.cy > ay+ah) { continue;}
              if (ax > a.cx+a.cw) { continue; }
              if (ay > a.cy+a.ch) { continue; }
            graphics.beginFill(0,0.2);
             graphics.drawRect(ax,ay,aw,ah);
            graphics.endFill();
               return true;
            }//nexti
            return false;

            /*
            var b:xRect;
            b = testRect;
            if (b.cx > ax+aw) { return false;}
            if (b.cy > ay+ah) { return false;}
            if (ax > b.cx+b.cw) { return false; }
            if (ay > b.cy+b.ch) { return false; }
            
            graphics.beginFill(0,0.2);
             graphics.drawRect(ax,ay,aw,ah);
            graphics.endFill();
            return true;
            */
        }//iswall
        
        public var cx:Number = 100;
        public var cy:Number = 100;
        public var vx:Number = 0;
        public var vy:Number = 0;
        
        
        public function onEnter(e:Event):void        
        {
            graphics.clear();
            graphics.lineStyle(2,0);
            
            var a:xRect;            var i:int;            var num:int;
            num = vecRect.length;
            for (i = 0; i < num; i++)
            {
              a = vecRect[i];  
              graphics.drawRect(a.cx,a.cy,a.cw,a.ch);
            }//nexti
                   
            //graphics.drawRect(testRect.cx, testRect.cy, testRect.cw,testRect.ch);
            
            graphics.drawCircle(cx,cy, 8);
            
            var mx:Number;
            var my:Number;
            mx = stage.mouseX;
            my = stage.mouseY;
            
            if (cx > mx+20) { vx -=0.2; }
            else if (cx < mx-20) { vx+=0.2;}
            
            if (cy > my +40) { vy = -3;}
            
            
            vy += 0.2;
            
            if (vy < 0 && isWall(cx-8+2,cy-16,12,4)) {vy = 0;}
            if (vy > 0 && isWall(cx-8,cy+16+8, 16,4) )   { vy = 0;} 
            
            if (vx > 0 && isWall(cx+8,cy-4, 8,8)) { vx = 0;}
            if (vx < 0 && isWall(cx-8-8,cy-4, 8,8)) { vx = 0;}
            
            if (isWall(cx-2,cy,4,24) )
            if (isWall(cx-8+2,cy-16,12,4) == false)
            { cy-=1; }
            
            
            cx += vx; cy+= vy;
            
        }//onenter
        
        
        
    }//classend
}

internal class xRect
{
  public function xRect(ax:Number=0,ay:Number=0,aw:Number=0,ah:Number=0)
  { 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