ボールの放り投げ

ActionScript3.0始めました。今日はボールの放り投げについてのソースを書いてみました。ステージ内でボールをクリックするとドラッグ出来ます。そのまま放り投げたとき、ステージの端で跳ね返る運動を書いてみました。
サンプル:

// イベントリスナー
my_ball.addEventListener(MouseEvent.MOUSE_DOWN, switchOn);
stage.addEventListener(MouseEvent.MOUSE_UP, switchOff);
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveBox);
stage.addEventListener(Event.ENTER_FRAME, throwBox);

// パラメータ
var sw:Boolean = false;
var click_x:int = 0;
var click_y:int = 0;
var mouseX_bef:int;
var mouseY_bef:int;
var v_x:Number = 0;
var v_y:Number = 0;
var rub:Number = 1.01; // 摩擦
var ela:Number = 1.2; //弾性率
var limitX:int = stage.stageWidth - my_ball.width;
var limitY:int = stage.stageHeight - my_ball.height;

// マウスダウンするとスイッチON&ズレ分取得
function switchOn(event:MouseEvent):void {
    sw = true;
    click_x = event.stageX - my_ball.x;
    click_y = event.stageY - my_ball.y;
}

// マウスアップするとスイッチ
function switchOff(event:MouseEvent):void {
    sw = false;
}

// ボックスを移動する&速度指定
function moveBox(event:MouseEvent):void {
    if(sw) {
        my_ball.x = stage.mouseX - click_x;
        my_ball.y = stage.mouseY - click_y;
        v_x  = stage.mouseX - mouseX_bef;
        v_y = stage.mouseY - mouseY_bef;
        mouseX_bef = stage.mouseX;
        mouseY_bef = stage.mouseY;
    }
}

// ボールを投げる
function throwBox(event:Event):void {
    if(!sw) { // 捕まえられたら止まる
        // 画面外に行かないように
        if(my_ball.x < 0) my_ball.x = 0;
        if(my_ball.x > limitX) my_ball.x = limitX;
        if(my_ball.y < 0) my_ball.y = 0;
        if(my_ball.y > limitY) my_ball.y = limitY;
       
        // 端っこで跳ね返る
        if((my_ball.x + v_x) < 0 || (my_ball.x + v_x) > limitX) {
            v_x = -v_x/ela;
        }
        if((my_ball.y + v_y) < 0 || (my_ball.y + v_y) > limitY) {
            v_y = -v_y/ela;
        }
           
        // 摩擦
        v_x = v_x/rub;
        v_y = v_y/rub;
       
        // 移動
        my_ball.x += v_x
        my_ball.y += v_y;
       
        // 動き続けないように
        if(Math.abs(v_x) < 0.01) v_x = 0;
        if(Math.abs(v_y) < 0.01) v_y = 0;
    }
}


ちなみに、改良するとこんなんなります。

トラックバック(0)

このブログ記事を参照しているブログ一覧: ボールの放り投げ

このブログ記事に対するトラックバックURL: http://www.hecomi.com/mt/mt-tb.cgi/33