/**
* 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