Grid算法--地图编辑器第一步

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
        
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值