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

お絵描きの初歩(ピンクの太線)

Get Adobe Flash player
by nabe 31 Dec 2008
// forked from nabe's ソースの雛形
package {

    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;

    [SWF(width="465", height="465", backgroundColor="0xAABBCC", frameRate="1")];  
    public class BaseClass extends Sprite {

        private var W_:uint;
        private var H_:uint;

        private var list_:Vector.<Point>;
        private var before_:uint;
        private var current_:uint = 0;
        private var drag_:Boolean = false;

        private var bmd_:BitmapData;
        private var cursor_:Sprite;

        private var work_:Shape;

        public function BaseClass () {
        //コンストラクタ。ここから全体の処理が開始する。
        //1.初期化処理の呼び出しを仕込むに留める。
            addEventListener(Event.ADDED_TO_STAGE, init_);
        }

        private function init_ (event_:Event):void {
        //初期化処理。
        //1.用済みのリスナ登録を解除する。
            event_.target.removeEventListener(event_.type, arguments.callee);

        //2.実際の処理を書き足す。
            sample_();
        }

        private function sample_ ():void {
        //サンプル処理。
        //1.画面サイズを取得する。            
            W_ = stage.stageWidth;
            H_ = stage.stageHeight;

        //2.ビットマップを配置する。
            bmd_ = new BitmapData(W_, H_, false, 0xAABBCC);
            addChild(new Bitmap(bmd_));

        //3.描画作業用のシェイプを用意する。
            work_ = new Shape();

        //4.カーソルを作成する。
            cursor_ = new Sprite();
            var graphics_:Graphics;
            graphics_ = cursor_.graphics;
            graphics_.lineStyle(0, 0xFF0000);
            graphics_.drawCircle(0, 0, 5);
            addChild(cursor_);
            cursor_.startDrag(true);

        //5.カーソル位置記憶用の配列を用意する。
            list_ = new Vector.<Point>(2, true);
            for (var i_:int = 0; i_ < 2; i_++) list_[i_] = new Point();

        //6.イベント処理を登録する。
            stage.addEventListener(MouseEvent.MOUSE_DOWN, beginDrag_);
            stage.addEventListener(MouseEvent.MOUSE_MOVE, onDrag_);
            stage.addEventListener(MouseEvent.MOUSE_UP  , endDrag_);
        }

        private function fetchPos_ ():void {
            before_ = current_;
            current_ = 1 - current_;
            list_[current_].x = mouseX;
            list_[current_].y = mouseY;
        }

        private function beginDrag_ (event_:MouseEvent):void {
            fetchPos_();
            drag_ = true;
        }

        private function onDrag_ (event_:MouseEvent):void {
            if (!drag_) return;
            fetchPos_();
            var graphics_:Graphics = work_.graphics;
            graphics_.clear();
            graphics_.lineStyle(10, 0xFFCCCC);
            graphics_.moveTo(list_[before_].x, list_[before_].y);
            graphics_.lineTo(list_[current_].x, list_[current_].y);
            bmd_.draw(work_);
        }

        private function endDrag_ (event_:MouseEvent):void {
            drag_ = false;
        }

    }

}