creating a small drawing tool using as3 where you can draw with mouse and record and replay it my clicking on replay button
code
==============================================
//import required packages
import com.greensock.*;
import com.greensock.easing.*;
//
var drawing:Boolean=false;
var eraseing:Boolean=false;
var drawingbroad:Sprite;
var linedraw:Sprite;
var eraserDraw:Sprite;
var xloc:Array=new Array();
var yloc:Array=new Array();
var type:Array=new Array();
var replayline:Sprite;
var replayeraser:Sprite;
var startpointPencil:Boolean=false;
var startpointeraser:Boolean=false;
var toolsArray=new Array("pencil","eraser","replay");
//
var recordconter:Number=-1;
var tooltype:String=null;
var recordTimer:Timer;
init();
function init() {
newDrawing();
addnewdrawing();
selectaTool();
}
function newDrawing():void {
clearAll()
drawingbroad=new Sprite();
this.addChild(drawingbroad);
drawingbroad.x=10;
drawingbroad.y=10;
drawingbroad.graphics.lineStyle(1,0x000000);
drawingbroad.graphics.beginFill(0xFFFFFF);
drawingbroad.graphics.drawRect(10,10,750,500);
drawingbroad.graphics.endFill();
drawingbroad.alpha=0;
TweenLite.to(drawingbroad, 1, {alpha:1});
dispatchpencilEvents();
}
function selectaTool():void {
pencil.buttonMode=true;
eraser.buttonMode=true;
replay.buttonMode=true;
}
//
function dispatchpencilEvents():void {
drawingbroad.addEventListener(MouseEvent.MOUSE_UP,selectedToofalse);
drawingbroad.addEventListener(MouseEvent.MOUSE_DOWN,selectedTootrue);
pencil.addEventListener(MouseEvent.MOUSE_DOWN,selectpencil);
drawingbroad.addEventListener(MouseEvent.MOUSE_MOVE,startDrawing);
eraser.addEventListener(MouseEvent.MOUSE_DOWN,selecteraser);
replay.addEventListener(MouseEvent.MOUSE_DOWN,showreplayaction);
}
function showreplayaction(e:MouseEvent):void {
tooltype="replay";
toolactive(tooltype);
recordTimer=new Timer(10,xloc.length);
recordTimer.addEventListener("timer",showrecordedaction);
recordTimer.start();
}
function clearAll():void
{
recordconter=0;
startpointPencil=false;
xloc=[];
yloc=[];
type=[];
}
function showrecordedaction(t:TimerEvent):void {
recordconter+=1;
if((recordconter+2)==xloc.length)
{
clearAll();
recordTimer.removeEventListener("timer",showrecordedaction);
}
type[recordconter];
if (type[recordconter]=="pencil") {
if (!startpointPencil) {
replayline=new Sprite();
replayline.graphics.moveTo(xloc[recordconter],yloc[recordconter]);
startpointPencil=true;
drawingbroad.addChild(replayline);
} else {
replaypencilaction(recordconter);
}
} if (type[recordconter]=="eraser") {
replayeraseraction();
}
}
function replayeraseraction() {
replayeraser=new Sprite();
replayeraser.graphics.beginFill(0xFFFFFF);
replayeraser.graphics.drawRect(xloc[recordconter],yloc[recordconter],50,50);
replayeraser.graphics.endFill();
drawingbroad.addChild(replayeraser);
}
function replaypencilaction(recordconter):void {
replayline.graphics.lineStyle(1,0x000000);
replayline.graphics.lineTo(xloc[recordconter],yloc[recordconter]);
replayline.graphics.endFill();
drawingbroad.addChild(replayline);
}
function selectedToofalse(m:MouseEvent):void {
if (tooltype=="pencil") {
drawing=false;
eraseing=false;
} else if (tooltype=="eraser") {
drawing=false;
eraseing=false;
}
//TweenLite.to(linedraw, 0.5, {alpha:1});
}
function selectedTootrue(m:MouseEvent):void {
if (tooltype=="pencil") {
drawing=true;
eraseing=false;
} else if (tooltype=="eraser") {
drawing=false;
eraseing=true;
}
linedraw=new Sprite();
linedraw.graphics.moveTo(linedraw.mouseX,linedraw.mouseY);
}
//select a tool
function startDrawing(m:MouseEvent):void {
if (drawing && tooltype=="pencil") {
linedraw.graphics.lineStyle(1,0x000000);
linedraw.graphics.lineTo(drawingbroad.mouseX,drawingbroad.mouseY);
linedraw.graphics.endFill();
linedraw.alpha=0.2;
drawingbroad.addChild(linedraw);
xloc.push(mouseX);
yloc.push(mouseY);
type.push("pencil");
} else if (eraseing && tooltype=="eraser") {
eraserDraw=new Sprite();
eraserDraw.graphics.beginFill(0xFFFFFF);
if (drawingbroad.mouseX>(drawingbroad.width-50)) {
eraserDraw.graphics.drawRect(drawingbroad.mouseX-50,drawingbroad.mouseY,50,50);
} else if (drawingbroad.mouseY>(drawingbroad.height-50)) {
eraserDraw.graphics.drawRect(drawingbroad.mouseX,drawingbroad.mouseY-50,50,50);
} else {
eraserDraw.graphics.drawRect(drawingbroad.mouseX,drawingbroad.mouseY,50,50);
}
eraserDraw.graphics.endFill();
drawingbroad.addChild(eraserDraw);
xloc.push(mouseX);
yloc.push(mouseY);
type.push("eraser");
}
}
function selectpencil(m:MouseEvent):void {
tooltype="pencil";
toolactive(tooltype);
}
function selecteraser(m:MouseEvent):void {
tooltype="eraser";
toolactive(tooltype);
}
function toolactive(__tooltype):void {
switch (__tooltype) {
case "pencil" :
workwithpencil();
break;
case "eraser" :
workwitheraser();
break;
case "replay" :
workwithreplay();
break;
}
}
function activeMe():void {
for (var i in toolsArray) {
if (tooltype==toolsArray[i]) {
TweenLite.to(this[toolsArray[i]], 1, {alpha:0.2});
} else {
TweenLite.to(this[toolsArray[i]], 1, {alpha:1});
}
}
}
function workwithpencil():void {
activeMe();
}
function workwitheraser():void {
activeMe();
}
function workwithreplay():void {
activeMe();
}
//
function addnewdrawing():void {
newd.addEventListener(MouseEvent.CLICK,refreshpage);
}
function refreshpage(m:MouseEvent):void {
TweenLite.to(drawingbroad, 1, {alpha:0,onComplete:removeDrawing});
}
function removeDrawing():void {
if (drawingbroad) {
removeChild(drawingbroad);
drawingbroad=null;
}
newDrawing();
}
screen shot
==========================================

Comments
Post a Comment