ドラッグで移動するブロック

by kururu99
これを拡張したものがhttp://wonderfl.net/c/t8Xkになります
♥0 | Line 55 | Modified 2010-10-13 10:02:44 | MIT License
play

ActionScript3 source code

/**
 * Copyright kururu99 ( http://wonderfl.net/user/kururu99 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/a6fI
 */

package {
    import flash.display.Sprite;
    public class Main extends Sprite {
        public function Main():void {
            var dragger:Dragger = new Dragger();
            this.addChild(dragger);
        }
    }
}
////////////////////////////////////
////////////////////////////////////
import flash.events.*;
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.display.Stage;

class Dragger extends Sprite {
    var draggB:Sprite;
    public function Dragger(width:int=100, height:int=100):void {
        draggB = getBox(0x0099ff,width,height);
        this.addChild(draggB);
        draggB.addEventListener(Event.ENTER_FRAME,MoveScroll);
    }
    private function getBox(color:uint,width:int=100, height:int=100):Sprite {
        var box:Sprite = new Sprite();
        box.graphics.beginFill(color);
        box.graphics.drawRoundRect(0, 0, width, height,10);
        box.graphics.endFill();
        return box;
    }
    private function MoveScroll(e):void {
        removeEventListener(Event.ENTER_FRAME, MoveScroll);
        draggB.addEventListener(MouseEvent.MOUSE_DOWN, scrollbarHandler);
        stage.addEventListener(MouseEvent.MOUSE_UP, scrollbarUpHandler);
    }
    private function scrollbarHandler(e):void {
        addEventListener(Event.ENTER_FRAME, onScrollArea );
    }
    private function scrollbarUpHandler(e):void {
        removeEventListener(Event.ENTER_FRAME, onScrollArea );
    }
    private function onScrollArea(e):void {
        e.target.x=stage.mouseX-draggB.width/2;
        e.target.y=stage.mouseY-draggB.height/2;
        if (e.target.x<0) {
            e.target.x=0;
        }
        if (e.target.y<0) {
            e.target.y=0;
        }
        if (e.target.x>stage.stageWidth-draggB.width) {
            e.target.x=stage.stageWidth-draggB.width;
        }
        if (e.target.y>stage.stageHeight-draggB.height) {
            e.target.y=stage.stageHeight-draggB.height;
        }
    }
}