In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

DrawingApp2

Get Adobe Flash player
by brick 13 Jul 2010
package {
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.text.TextFormatAlign;
    import flash.utils.setTimeout;

    public class DrawingApp2 extends Sprite {
        private var tracks:Array;
        private var replayBtn:TextField;
        private var clearBtn:TextField;
        private var TIMEOUT:int = 10;
        private var penSize:Number = 10;
        private var penColor:uint = 0x000000;

        public function DrawingApp2() {
            init();
        }
        private function init():void {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            tracks = new Array();

                        var d:TextField = makeTextField('Draw!!!');
                        addChild(d);
                        d.backgroundColor = 0xff0000;

            replayBtn = makeTextField('Replay');
            addChild(replayBtn);
            clearBtn = makeTextField('Clear');
                        replayBtn.x = d.width + 5;
            addChild(clearBtn);
            clearBtn.x = d.width + 5 + replayBtn.width + 5;


                        ///d.x = replayBtn.width + 5 + clearBtn.width + 5;

                        
                        

            stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
            stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
            replayBtn.addEventListener(MouseEvent.CLICK, onClickReplay);
            clearBtn.addEventListener(MouseEvent.CLICK, onClickClear);
        }
        private function onMouseDown(event:MouseEvent):void {
            graphics.lineStyle(penSize, penColor);
            graphics.moveTo(mouseX, mouseY);
            tracks.push({x:mouseX, y:mouseY, down:true});
            stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        }
        private function onMouseUp(event:MouseEvent):void {
            tracks.push({x:mouseX, y:mouseY, down:false});
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        }
        private function onMouseMove(event:MouseEvent):void {
            graphics.lineTo(mouseX, mouseY);
            tracks.push({x:mouseX, y:mouseY, down:true});
        }
        private function onClickReplay(event:MouseEvent):void {
            trace('click replay: ' + tracks.length);
            graphics.clear();
            graphics.lineStyle(penSize, penColor);
            var i:int = 0;
            setTimeout(function():void{
                if (i < tracks.length) {
                    var track:Object = tracks[i] as Object;
                    //trace([track.x,track.y,track.down].join(':'));
                    if (i == 0 || tracks[i-1].down == false) {
                        graphics.moveTo(track.x, track.y);
                    } else {
                        graphics.lineTo(track.x, track.y);
                    }
                    i++;
                    setTimeout(arguments.callee, TIMEOUT);
                }
            }, TIMEOUT);
        }
        private function onClickClear(event:MouseEvent):void {
            graphics.clear();
            graphics.lineStyle(penSize, penColor);
            tracks = new Array();
        }
        private function makeTextField(str:String):TextField {
            var tf:TextField = new TextField();
            tf.text = str;

            var tf1:TextFormat = new TextFormat();
            tf1.color = 0xffffff;
            tf1.size = 14;
            tf1.font = 'Arial';
            tf1.align = TextFormatAlign.CENTER;
            tf.setTextFormat(tf1);

            tf.background = true;
            tf.backgroundColor = 0x666666;
            tf.border = true;
            tf.borderColor = 0x000000;
            tf.width = 50;
            tf.height = 20;
            return tf;
        }
    }
}