マウスから逃げるアクション

away_mouse



ステージ上にあるたくさんの円がマウスカーソルから逃げるように移動します
解説はつづきから






新規ファイル作成
ステージ設定はサイズを400×300、フレームレートは30に





新規シンボル作成からActionScriptに書き出しにチェックを入れて、クラス名をCircleに





30×30の大きさの円を描く、線なし、色は任意




シーン1に戻り、ActionScriptを記述

//円の数
var num:int = 120;
//円の初期位置をいれる配列
var locX:Array = new Array();
var locY:Array = new Array();

for (var i:int=0; i < num; i++) {
    //円作成
    var circle:Circle = new Circle();
    //色をランダムに
    var myColor:ColorTransform = new ColorTransform();
    myColor.color = Math.random()*0xffffff;
    circle.transform.colorTransform = myColor;
    //ブレンドモードをハードライトに
    circle.blendMode = BlendMode.HARDLIGHT;
    //円の初期位置をステージ上にランダムに
    circle.x = int(Math.random() * stage.stageWidth);
    circle.y = int(Math.random() * stage.stageHeight);
    //円の大きさを0.5倍〜2倍でランダムに
    circle.scaleX = circle.scaleY = Math.random()*1.5+0.5;
    //動きを制御するときに判別するために円にインスタンス名をつける
    circle.name = String(i);
    //円配置
    addChild(circle);
    //円の位置を配列に記憶
    locX.push(circle.x);
    locY.push(circle.y);
}

//円の動きのイベント追加
addEventListener(Event.ENTER_FRAME, loop);

function loop(e:Event):void {
    for (var i:int = 0; i < num; i++) {
        //インスタンス名から参照する円を指定
        var cir:Circle = getChildByName(String(i)) as Circle;
        //円とマウス位置との角度
        var rad:Number = Math.atan2(cir.y-mouseY, cir.x-mouseX);
        //円とマウス位置の距離
        var dis:Number = Math.sqrt(Math.pow(mouseX-cir.x, 2)+Math.pow(mouseY-cir.y, 2));
        //マウス位置に近いほど値が大きくなる
        var per:Number = 800/dis;
        //マウスから遠ざかる動きと初期位置に戻ろうとする動きを設定
        cir.x += per*Math.cos(rad)+(locX[i]-cir.x)*0.05;
        cir.y += per*Math.sin(rad)+(locY[i]-cir.y)*0.05;
    }
}


これでムービープレビューすると以下のようになってるかと思います







以上、マウスから逃げるアクションの作り方でした