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

TechHUB:Flash3:00:MoveToClickPoint

Get Adobe Flash player
by yprops 09 Apr 2011
    Embed
/**
 * Copyright yprops ( http://wonderfl.net/user/yprops )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/rKzW
 */

package {
    import flash.geom.Point;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.display.Graphics;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        
        //-------定数------------
        
        private const MOVE_RATE :Number = 0.1;
        
        
        //--------変数-------------
        
        private var bg :Sprite;
        private var mover :Sprite;
        private var moverTargetPoint :Point;
        
        //-------コンストラクタ-------
        
        public function FlashTest() {
            
            //背景設置(何かしら表示物がある場所でないととクリックイベントを出さないので設置)
            bg = makeRectSp(0xFFCCCC, 1, 0,0,300,300);
            addChild(bg);
            
            //動くモノ設置
            mover = makeRectSp(0x000000, 0.5, -50,-50,100,100);
            moverTargetPoint = new Point();
            mover.addEventListener(Event.ENTER_FRAME, moverUpdate);
            addChild(mover);
            
            //クリック受付用
            addEventListener(MouseEvent.CLICK, onClicked);
        }
        
        
        //--------リスナー----------
        
        private function onClicked(ev:MouseEvent) :void{
            moverTargetPoint = new Point(ev.stageX, ev.stageY);
            
            //※ MouseEvent.stageX, stageY ... ステージ上のマウス位置。
            //※ MouseEvent.localX, localY ... イベント発行したオブジェクト上のマウス位置。
        }
        
        
        
        //--------メソッド----------
        
        private function makeRectSp(color :int, alpha :Number, x :Number,y :Number,w :Number,h :Number) :Sprite{
            var sp :Sprite = new Sprite();
            var g :Graphics = sp.graphics;
            g.beginFill(color, alpha);
            g.drawRect(x, y, w, h);
            g.endFill();
            return sp;
        }
        
        
        //--------mover用----------
        
        private function moverUpdate(ev:Event) :void{
            
            //クリックしたときのマウス位置をターゲットとする場合
            mover.x += (moverTargetPoint.x - mover.x) * MOVE_RATE;
            mover.y += (moverTargetPoint.y - mover.y) * MOVE_RATE;
            
            //常にマウス位置をターゲットとする場合
            //mover.x += (mouseX - mover.x) * MOVE_RATE;
            //mover.y += (mouseY - mover.y) * MOVE_RATE;
        }
        
    }
}