网格概念

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;

}

posted on 2013-09-27 12:41  橙小风  阅读(356)  评论(0编辑  收藏  举报