网格概念
public function Maze()
{
super();
if(stage.fullScreenWidth <stage.fullScreenHeight)
{
stage.setOrientation(StageOrientation.ROTATED_RIGHT);
}
// support autoOrients
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.displayState = StageDisplayState.FULL_SCREEN;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoad);
loader.load(new URLRequest("black.png"));
}
private function onLoad(event:Event):void
{
var obj:Bitmap = Bitmap(loader.content);
bmpd = obj.bitmapData;
addChild(obj);
rawDrid();
}
private function rawDrid():void
{
var gridAry:Array = [];
var blackGridAry:Array = [];
var gridSize:int = 10;
var horizontalGridCount:int = stage.width / gridSize;
var verticalGridCount:int = stage.height / gridSize;
var totalCount:int = horizontalGridCount * verticalGridCount;
trace("水平格子数量:" + horizontalGridCount + " 垂直格子数量:" + verticalGridCount);
var i:int = 0;
var j:int = 0;
var startX:int = 0;
var startY:int = 0;
for(i;i < horizontalGridCount;i++)
{
startX = i * gridSize;
j = 0;
for(;j < verticalGridCount; j++)
{
startY = j * gridSize;
var rect:Rectangle = new Rectangle(startX,startY,gridSize,gridSize);
gridAry.push(rect);
}
}
trace("格子总数:"+gridAry.length);
i = 0;
for(i;i < totalCount;i++)
{
var rect1:Rectangle = Rectangle(gridAry[i]);
if(checkHaveBlackPoint(rect1))
{
blackGridAry.push(rect1);
}
}
var sprite:Sprite = new Sprite();
this.addChild(sprite);
i = 0;
var len:int = blackGridAry.length;
sprite.graphics.lineStyle(1,0xff0000);
for(i; i < len; i++)
{
var rect2:Rectangle = Rectangle(blackGridAry[i]);
sprite.graphics.moveTo(rect2.x,rect2.y);
sprite.graphics.lineTo(rect2.x + gridSize,rect2.y);
sprite.graphics.lineTo(rect2.x + gridSize,rect2.y+gridSize);
sprite.graphics.lineTo(rect2.x,rect2.y+gridSize);
sprite.graphics.lineTo(rect2.x,rect2.y);
}
}
private function checkHaveBlackPoint(rect:Rectangle):Boolean
{
var i:int = rect.x;
var j:int;
var color:uint = 0;
var leni:int = rect.width + rect.x;
var lenj:int;
for(i; i < leni;i++)
{
j = rect.y;
lenj = rect.y + rect.height;
for(j;j < lenj;j++)
{
color = bmpd.getPixel(i,j);//0是黑色
if(color == 0)
{
return true;
}
}
}
return false;
}