12 years ago
I found a Jackson Pollock style painting example written in AS2 called ‘Splatter’ over at stamen.com. I wanted to include a Pollock style brush in my painting application so I converted it into AS3. Just copy and past the following code into a new AS3 document in Flash.
[kml_flashembed publishmethod=”static” fversion=”9.0.0″ movie=”https://www.purplesquirrels.com.au/blogstuff/pollock/pollockfla.swf” width=”650″ height=”500″ targetclass=”alignnone”]

[/kml_flashembed]
[cc lang=”actionscript3″]
import flash.events.MouseEvent;
import flash.display.MovieClip;
//set up some vars
var new_size_influence:Number = 0.5;
var mid_point_push:Number = 0.75;
var max_line_width:Number = (Math.random() * 50) + 50;
//vars for line colour and alpha
var _colour:uint = 0x000000;
var _alpha:Number = 1;
//create var to hold all mouse position data
var obj:Object = new Object();
obj.x = 0;
obj.y = 0;
obj.start_x = obj.mid_x = obj.end_x = (stage.stageWidth / 2);
obj.start_y = obj.mid_y = obj.end_y = (stage.stageHeight / 2);
obj.size = 0;
//add mouse down event listener
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
function onDown(e:MouseEvent):void
{
//create random colour
_colour = Math.random()*0xFFFFFF;
//set all line data to current mouse position
obj.start_x = obj.mid_x = obj.end_x = mouseX;
obj.start_y = obj.mid_y = obj.end_y = mouseY;
//add mouse up and mouse move event listeners
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
}
function onUp(e:MouseEvent):void
{
//remove mouse up and mouse move event listeners
stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, onUp);
}
function onMove(e:MouseEvent):void
{
//find the mid point between current and last mouse position
obj.mid_x = ((obj.end_x – obj.start_x) * (1 + mid_point_push)) + obj.start_x;
obj.mid_y = ((obj.end_y – obj.start_y) * (1 + mid_point_push)) + obj.start_y;
//set start to last point
obj.start_x = obj.end_x;
obj.start_y = obj.end_y;
//set end to current point
obj.end_x = mouseX;
obj.end_y = mouseY;
//get distance between start and end point
var distance:Number = Math.sqrt(Math.pow((obj.end_x – obj.start_x), 2) + Math.pow((obj.end_y – obj.start_y), 2));
//set size depending on distance
var new_size:Number = max_line_width / distance;
obj.size = (new_size_influence * new_size) + ((1 – new_size_influence) * obj.size);
//draw the line
graphics.lineStyle(obj.size,_colour,_alpha);
graphics.moveTo(obj.start_x, obj.start_y);
graphics.curveTo(obj.mid_x, obj.mid_y, obj.end_x, obj.end_y);
// splotch
var dd:Number = Math.sqrt(Math.pow((obj.end_x – obj.start_x), 2) + Math.pow((obj.end_y – obj.start_y), 2));
for (var i:int = 0; i