flash on 2014-11-5
♥0 |
Line 88 |
Modified 2014-11-05 01:02:38 |
MIT License
archived:2017-03-30 11:53:02
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