package
{
import flash.display.Shape;
import flash.display.Sprite;
/**
* ...
* @author dreamnight
*/
public class GridLayer extends Sprite
{
private var lineColor:uint;
private var grid:Shape;
public function GridLayer(_color:uint=0xbbbbbb)
{
lineColor = _color;
grid = new Shape();
this.addChild(grid);
}
public function drawGrid (gridWidth:Number,gridHeight:Number,tileW:Number,tileH:Number):void {
var col:int = Math.floor(gridWidth/ tileW);
var row:int = Math.round(gridHeight / tileH);
var _wHalfTile:int = int(tileW/2);
var _hHalfTile:int = int(tileH/2);
var dblMapWidth:int = col*2 + 1;
var dblMapHeight:int = row * 2 + 1;
///x轴 和YY轴方向都 画 / / 两个方向
//X轴方向的点 / / 方向画线
grid.graphics.lineStyle(1, lineColor, 1);
for (var i:int = 1; i <= dblMapWidth;i=i+2 ) {
/// 画 / 方向的线
grid.graphics.moveTo(i * _wHalfTile, 0);
if (dblMapWidth <= dblMapHeight) {
grid.graphics.lineTo(0, i * _hHalfTile);
}else {
if (i <= dblMapHeight) {
grid.graphics.lineTo(0,i*_hHalfTile);
}
else {
grid.graphics.lineTo((i-dblMapHeight)*_wHalfTile,dblMapHeight*_hHalfTile);
}
}
//画 /方向的线
grid.graphics.moveTo(i * _wHalfTile, 0);
if (dblMapWidth <= dblMapHeight) {
grid.graphics.lineTo(dblMapWidth*_wHalfTile,(dblMapWidth-i)*_hHalfTile)
}else {
if (i +dblMapHeight<=dblMapWidth) {
grid.graphics.lineTo((i+dblMapHeight)*_wHalfTile,dblMapHeight*_hHalfTile);
}
else {
grid.graphics.lineTo(dblMapWidth*_wHalfTile,(dblMapWidth-i)*_hHalfTile);
}
}
}
// y轴新方向上的 / /
i = 1;
for (i; i <= dblMapHeight;i=i+2 ) {
// / 方向上
if (dblMapWidth < dblMapHeight) {
if(i>dblMapWidth){
grid.graphics.moveTo(0, i*_hHalfTile);
grid.graphics.lineTo(dblMapWidth*_wHalfTile,(i-dblMapWidth)*_hHalfTile);
}
}
// / 方向上
grid.graphics.moveTo(0, i * _hHalfTile);
if (dblMapWidth < dblMapHeight) {
if (i + dblMapWidth <= dblMapHeight) {
grid.graphics.lineTo(dblMapWidth*_wHalfTile,(i+dblMapWidth)*_hHalfTile);
}else {
grid.graphics.lineTo((dblMapHeight-i)*_wHalfTile,dblMapHeight*_hHalfTile);
}
}
else {
grid.graphics.lineTo((dblMapHeight-i)*_wHalfTile,dblMapHeight*_hHalfTile);
}
//end for loop
}
//补全最终的未画部分
var dis:int =Math.abs(dblMapHeight - dblMapWidth);
// var num:int = int(dis / 2) * 2;
var j:int = 2;
if (dblMapWidth <= dblMapHeight) {
j=2
for (j; j <=dblMapWidth ;j=j+2 ) {
grid.graphics.moveTo(dblMapWidth * _wHalfTile, (j+dis)*_hHalfTile);
grid.graphics.lineTo( j*_wHalfTile,dblMapHeight*_hHalfTile);
}
}
else{
j = 2;
for (j; j <= dblMapHeight;j=j+2 ) {
grid.graphics.moveTo((j+dis)*_wHalfTile,dblMapHeight*_hHalfTile);
grid.graphics.lineTo(dblMapWidth*_wHalfTile,j*_hHalfTile);
// end for loop
}
}
}
///end class
}
}
Grid算法--地图编辑器第一步
最新推荐文章于 2020-12-22 19:57:32 发布