-
[SWF(width = 600, height = 500, frameRate=30, background = 0xFFFFFF)]
-
-
var cmd:String = "1000 small orange circles, 9000 black lines,3 large white circles"
-
// try some of these commands:
-
//"300 small red triangles and 2 big orange circle 3 big black lines";
-
//"100 big black triangles, ten small white rectangles 1 big white circle and 1 big gray poly";
-
// "300 small red triangles and 2 big orange circle 3 big black lines";
-
//"10 big black circles 1000 big white lines 100 small white rects 1 big red circle and 1 green poly"
-
stage.align = "TL"
-
var msk:Shape = new Shape();
-
with(msk.graphics) beginFill(0x00FF00), drawRect(0,0,600, 400);
-
this.mask = msk;
-
var amount:Number;
-
var color:uint = 0;
-
var shape:String;
-
-
var hexLookup:Object = {red:0xFF0000, green:0x00FF00, blue:0x0000FF, yellow:0xFFFF00, orange:0xFFCC00, white:0xFFFFFF, gray:0xCCCCCC, grey:0xCCCCCC, black:0x000001};
-
var sizeLookup:Object = {large:true, big:true, small:true, tiny:true};
-
var defaultSize:Number = 50;
-
var size:Number = defaultSize;
-
var halfSize:Number = size / 2;
-
var circles:Function = circle;
-
var ovals:Function = oval, ellipse:Function = oval;
-
var rects:Function = rect, rectangle:Function = rect, rectangles:Function = rect;
-
var lines:Function = line;
-
var triangles:Function = triangle;
-
var polygon:Function = poly, polygons:Function = poly;
-
var large:Function = big;
-
var tiny:Function = small;
-
-
parse();
-
function parse():void {
-
amount = 1;
-
color = 0x000000;
-
shape = "circle";
-
var words:Array = cmd.split(/[\W]+/g)
-
for (var i:int = 0; i<words.length; i++){
-
var w:* = words[i];
-
if (isNaN(Number(w))){
-
if (hexLookup[w]){
-
color = hexLookup[w];
-
trace(w, "color");
-
}else
-
if (sizeLookup[w]){
-
this[w]();
-
}else
-
if (this[w]){
-
for (var j:int = 0; j<amount; j++){
-
this[w]();
-
}
-
color = 0x000000;
-
size = defaultSize;
-
trace(w, "command");
-
}
-
}else{
-
trace(w, "number");
-
amount = w;
-
}
-
}
-
}
-
function makeShape(p:Array):void{
-
var s:Shape = Shape(addChild(new Shape()));
-
for (var i:int = 0; i<p.length; i++) {
-
s.graphics[p[i][0]].apply(graphics,p[i].splice(1));
-
}
-
s.rotation = Math.random() * 360;
-
s.x = Math.random() * stage.stageWidth;
-
s.y = Math.random() * stage.stageHeight;
-
}
-
-
function circle():void{
-
makeShape([["beginFill",color], ["drawCircle",0,0,Math.random() * halfSize + halfSize]]);
-
}
-
function oval():void{
-
makeShape([["beginFill",color],["drawEllipse", 0,0,Math.random() * size + halfSize]]);
-
}
-
function square():void{
-
var s:Number = Math.random() * halfSize + halfSize;
-
var p:Number = -s/2;
-
makeShape([["beginFill",color],["drawRect", p, p, s, s]]);
-
}
-
function rect():void{
-
var w:Number = Math.random() * halfSize + halfSize;
-
var h:Number = Math.random() * halfSize + halfSize;
-
makeShape([["beginFill",color],["drawRect", -w/2, -h/2, w, h]]);
-
}
-
function line():void{
-
var s:Number = size * 2;
-
makeShape([["lineStyle",Math.random()*3, color],["lineTo", Math.random()*s - size, Math.random()*s - size]])
-
}
-
function triangle():void {
-
var s:Number = size * 2;
-
makeShape([["beginFill",color],["lineTo", Math.random()*s - size, Math.random()*s - size], ["lineTo", Math.random()*s - size, Math.random()*s - size]]);
-
}
-
function poly():void {
-
var s:Number = size * 2;
-
var cmds:Array = [["beginFill",color]]
-
var num:Number = int(Math.random()*8) + 2;
-
for (var i:int = 0; i<num; i++){
-
cmds.push(["lineTo", Math.random()*s - size, Math.random()*s - size]);
-
}
-
makeShape(cmds);
-
}
-
function big():void{
-
size = 100 + Math.random() * 40;
-
halfSize = size / 2;
-
}
-
function small():void {
-
size = 3 + Math.random() * 20;
-
halfSize = size / 2;
-
}