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

【隅に】逃げるボタン【追い込めない】

マウスから逃げるボタン
 ・minimalcompsの習作

これを使うための習作
ローカルでの動作確認用
Get Adobe Flash player
by o_healer 08 Sep 2010
/**
 * Copyright o_healer ( http://wonderfl.net/user/o_healer )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/gdBC
 */

/*
 マウスから逃げるボタン
 ・minimalcompsの習作
*/

package {
    import com.bit101.components.*;//これを使うための習作
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;

    [SWF(width="465", height="465", frameRate="60", backgroundColor="0x000000")]//ローカルでの動作確認用

    public class Test extends Sprite{
        static public const MOVE_VEL:Number = 10.0;//一フレームあたりの移動量
        public var m_Button:PushButton;//ボタン

        public function Test():void{//初期化処理
            m_Button = new PushButton(this, 465/2-100/2,465/2-20/2, "HaHaHa!", OnPress);//ボタンを生成
            addEventListener(Event.ENTER_FRAME, Update);//毎フレームUpdateを呼ぶ
        }

        public function OnPress(e:Event):void{//押されたら
            m_Button.label = "GAAAAAAAH!!!!";//叫んで
            removeEventListener(Event.ENTER_FRAME, Update);//もう動かない(Updateを呼ばない)
        }

        public function Update(e:Event):void{//毎フレーム実行する
            var PseudoMouseX:Number = (mouseX - 465/2) * 1.2 + 465/2;//マウスの位置を少し補正して
            var PseudoMouseY:Number = (mouseY - 465/2) * 1.2 + 465/2;//端に追い詰められないようにして
            var Gap:Point = new Point(m_Button.x+m_Button.width/2-PseudoMouseX, m_Button.y+m_Button.height/2-PseudoMouseY);//その位置の逆に動く
            if(Gap.length < 1){Gap.x = 1;}
            Gap.normalize(MOVE_VEL);//長さをMOVE_VELに整える

            m_Button.x += Gap.x;//実際に移動
            m_Button.y += Gap.y;

            if(m_Button.x < 0){m_Button.x = 0;}//範囲制限
            if(m_Button.x > 465-m_Button.width){m_Button.x = 465-m_Button.width;}
            if(m_Button.y < 0){m_Button.y = 0;}
            if(m_Button.y > 465-m_Button.height){m_Button.y = 465-m_Button.height;}
        }
    }
}