forked from: Messing with auto-spacing grid

by yurij.shaulov forked from Messing with auto-spacing grid (diff: 2)
♥0 | Line 55 | Modified 2013-09-07 03:21:21 | MIT License
play

ActionScript3 source code

/**
 * Copyright yurij.shaulov ( http://wonderfl.net/user/yurij.shaulov )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/mu7c
 */

// forked from zorzo_mezz's Messing with auto-spacing grid
package {
    import flash.display.Sprite;
    import flash.geom.Point;
    public class FlashTest extends Sprite {
        
        private var grid:Array;
    
        private var gridWidth:Number = 450;
        private var gridHeight:Number = 450;

    private var columnWidth:int; // for clip resizing
    private var columnHeight:int; // for clip resizing
        
        public function FlashTest() {
            // write as3 code here..
            generateGrid(new Point(20,20), gridWidth, gridHeight);
            
            // debug rendering
            this.graphics.lineStyle(1,0x000000);
            this.graphics.drawRect(0, 0, gridWidth, gridHeight);
            
            for(var i:int = 0; i < grid.length; i++) {
                this.graphics.lineStyle(1,0x000000);
                this.graphics.drawCircle(grid[i].x, grid[i].y , 1);
                this.graphics.lineStyle(1,0xFF0000);
                this.graphics.drawRect(grid[i].x-(columnWidth/2), grid[i].y-columnHeight, columnWidth, columnHeight); 
            }
        }
        
        private function generateGrid(gridsize:Point, gridWidth:int, gridHeight:int):void {
        grid = new Array(gridsize.x * gridsize.y);        
        columnWidth = gridWidth / gridsize.x;
        columnHeight = gridHeight / gridsize.y;        
        var halfColumnWidth:int = columnWidth / 2;
            
        for(var r:int = 0; r < gridsize.y; r++) {
            for(var c:int = 0; c < gridsize.x; c++) {        
            // nb. for a bottom middle reg point
            grid[r*gridsize.x+c] = new Point((c*columnWidth)+halfColumnWidth, (r*columnHeight)+columnHeight);         
        }
        }
        }
        
        private function generateGridWithJitter(gridsize:Point, gridWidth:int, gridHeight:int):void {
        grid = new Array(gridsize.x * gridsize.y);        
        columnWidth = gridWidth / gridsize.x;
        columnHeight = gridHeight / gridsize.y;        
        var halfColumnWidth:int = columnWidth / 2;
        
            var px:Number;//temp
            var py:Number;//temp    
        for(var r:int = 0; r < gridsize.y; r++) {
            for(var c:int = 0; c < gridsize.x; c++) {        
            // nb. for a bottom middle reg point
                    px = (c*columnWidth)+halfColumnWidth;
                    py = (r*columnHeight)+columnHeight;
                    px += randRange(-5, 5);
                    py += randRange(-10, 10);
            grid[r*gridsize.x+c] = new Point(px, py);         
        }
        }

            columnWidth *= 0.9;
            columnHeight *= 0.9;
        }
        
        private function randRange(low:Number, high:Number):Number {
            return Math.floor(Math.random() * (1+high-low)) + low;    
        }
    }
}