forked from: Messing with auto-spacing grid
forked from Messing with auto-spacing grid (diff: 2)
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;
}
}
}