/**
* Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/mQNYF
*/
package {
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.geom.Matrix;
import flash.events.Event;
import flash.display.BitmapData;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
pic = new BitmapData(16, 16, false, 0);
cx = 5;
cy = 5;
pic.setPixel(4,6, 0xFF);
pic.setPixel(5,6, 0xFF);
pic.setPixel(6,6, 0xFF);
pic.setPixel(7,6, 0xFF);
pic.setPixel(8,6, 0xFF);
stage.addEventListener(KeyboardEvent.KEY_UP, onKup);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKdown);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMdown);
stage.addEventListener(MouseEvent.MOUSE_UP, onMup);
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var vecKey:Vector.<Boolean> = new Vector.<Boolean>(512, false);
public function onKdown(e:KeyboardEvent):void { vecKey[e.keyCode] = true; }
public function onKup(e:KeyboardEvent):void { vecKey[e.keyCode] = false; }
public function isKeyDown(k:int):Boolean { return vecKey[k]; }
public function onMdown(e:MouseEvent):void { mdown = 1; }
public function onMup(e:MouseEvent):void { mdown = 0; }
public var mdown:int = 0;
public var pic:BitmapData;
public var mat:Matrix = new Matrix();
public var cw:Number = 32;
public var ch:Number = 32;
public var cx:int = 0;
public var cy:int = 0;
public var gt:int = 0;
public function isWall(ax:int, ay:int):Boolean
{ return pic.getPixel(ax,ay) > 0; }
public var mode:int = 0;
public var it:int = 0;
public var vecMode:Vector.<int> = Vector.<int>([-1,-1,-1,0,0,0,1,1,1]);
public function onEnter(e:Event):void
{
var mx:Number; var my:Number;
var tx:int; var ty:int;
gt += 1;
mx = stage.mouseX; my = stage.mouseY;
tx = Math.floor(mx/cw); ty = Math.floor(my/ch);
if (gt % 3 == 0)
{
var vx:int; var vy:int;
vx = 0; vy = 0;
// if (isKeyDown(Keyboard.UP)) { vy-= 1; }
// if (isKeyDown(Keyboard.DOWN)) { vy+= 1; }
if (isKeyDown(Keyboard.LEFT)) { vx-= 1; }
if (isKeyDown(Keyboard.RIGHT)) { vx+= 1; }
if (isKeyDown(Keyboard.UP) && mode == 0) { mode = 1; it = 0; }
if (mode == 1)
{
vy = vecMode[it];
it +=1; if (it>=vecMode.length) { it =0; mode=0;}
} else { vy = 1; }
if (isWall(cx+vx,cy) || isWall(cx+vx,cy-1) ) { vx =0; }
cx += vx;
if (isWall(cx,cy+vy)) { vy =0; }
if (isWall(cx,cy+vy-1)) { vy =0; if (mode==1) { mode =0;} }
// if (isWall(cx+vx,cy+vy)) { vx=0; vy =0; }
cy += vy;
}//endif
mat.a = cw; mat.d = ch;
if (mdown > 0) { pic.setPixel(tx,ty, 0xFF); }
graphics.clear();
graphics.beginBitmapFill(pic, mat,false, false);
graphics.drawRect(0,0,465,465);
graphics.endFill();
graphics.lineStyle(2, 0x00FF00,0.5);
graphics.drawRect(tx*cw,ty*ch,cw,ch);
graphics.lineStyle(2, 0xFF0000);
graphics.drawRect(cx*cw,cy*ch, cw, ch);
graphics.drawRect(cx*cw,cy*ch-ch, cw, ch);
}//onenter
}//classend
}