flash on 2014-11-5

by mutantleg
♥0 | Line 88 | Modified 2014-11-05 01:02: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/c0re
 */

package {
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            

            cx = Math.random()*128;
            cy = Math.random()*128;            
            
            mw = 8;
            mh = 8;
            var num:int; var i:int; var a:xNode;
            num = mw*mh;
            vecNode = new Vector.<xNode>(num, false);
            for (i = 0; i < num; i++) { vecNode[i] = new xNode(); }
          
            graphics.clear();
            graphics.lineStyle(2,0);
            
            var r:xRect;
            r = new xRect(110+4,80+8,50,80)
            addRect(r);            
            graphics.lineStyle(4,0xFF0000);
            graphics.drawRect(r.cx,r.cy,r.cw,r.ch);

            for (i = 0; i < 16; i++)
            {
             r = new xRect(Math.random()*465,Math.random()*465,Math.random()*100,Math.random()*100)
                addRect(r);            
                graphics.drawRect(r.cx,r.cy,r.cw,r.ch);       
            }//nexti            
            
            graphics.lineStyle(2,0);
          
            var k:int; var yt:int; var m:xNode;
            for (i = 0; i < mh; i++)
            { yt = i*mw;
               for (k = 0; k < mw; k++)
               {
                   m = vecNode[yt+k];
                   m.cx = cx+k*cw;  m.cy = cy+i*ch;
                   graphics.drawRect(m.cx,m.cy,cw,ch);
                   if (m.vecRect.length >0)
                   {
                      graphics.beginFill(0, 0.5);
                        graphics.drawRect(m.cx,m.cy,cw,ch);
                      graphics.endFill();   
                   }
               }//nextk
            }//nexti
    
        }//ctor
        
        public var cx:Number = 70;
        public var cy:Number = 100;
        public var cw:Number = 32;
        public var ch:Number = 32;
        public var mw:int = 0;
        public var mh:int = 0;
        public var vecNode:Vector.<xNode>;
        
        public function addRect(a:xRect):void
        {
            var sx:int; var sy:int;     var ex:int; var ey:int;
            var i:int; var k:int; var yt:int; var m:xNode;
            sx = Math.floor((a.cx-cx)/cw);
            sy = Math.floor((a.cy-cy)/ch);
            ex = Math.ceil((a.cx-cx+a.cw)/cw);
            ey = Math.ceil((a.cy-cy+a.ch)/ch);
            if (sx < 0) {sx=0;}  if (sy < 0) { sy =0;}
            if (ex < 0) {return;} if (ey < 0) {return;}
            if (ex > mw) {ex=mw;} if(ey >mh) {ey=mh;}
            if (sx > mw) {return;} if (sy > mh) { return;}
            
            for (i = sy; i < ey; i++)
            { yt = i*mw;
               for (k = sx; k < ex; k++)
               {
                   m = vecNode[yt+k];
                   m.vecRect.push(a);
               }//nextk
            }//nexti
            
        }//addrect
        
    }//classend
}

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

internal class xNode
{
  public var cx:Number = 0;
  public var cy:Number = 0;
  public var vecRect:Vector.<xRect> = new Vector.<xRect>(0,false);
   
}//xnode