動くボールのアニメーション

ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―
ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―面白法人カヤック フォークビッツ

ワークスコーポレーション 2009-12-19
売り上げランキング : 161324

おすすめ平均 star
starすぐ始められるがゼロからは辛い
starwonderfl環境
star入門書ではないです。

Amazonで詳しく見る
by G-Tools

wonderfl>020205をforkして、ボールの動きを変えてみる。
元のコードは、動くボール、重力の影響を受けるボール、マウスに追従するボールを表示するもの。クラスの継承の例題用のきれいなコードだな、と思う。
これに4行ほど加えて、ボールが画面から消えないようにした(基本的ですな)。マウスに追従するボールは、いらないので取り除く。重力の影響を受ける方のボールは、ある程度時間が経つと画面から消える。

以下、ソースです。if文の4行を加えてみました。

// forked from yd_niku's ExtentionExample
package {
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
            var moveBall:Sprite= new MoveBallSprite (0x000066);
            moveBall.x = 100;
            moveBall.y = 50
            addChild( moveBall );
            
            var dropBall:Sprite= new DropBallSprite(0x006600);
            dropBall.x = 50;
            dropBall.y = 30
            addChild( dropBall );
        }
    }
}

import flash.display.*;
import flash.events.*;

class BallSprite extends Sprite {
	public function BallSprite( color:uint ){
		super();
		graphics.beginFill(color);
		graphics.drawCircle(0, 0, 10);
		graphics.endFill();
	}
}
class MoveBallSprite extends BallSprite {
    public var velocityX:Number = 8;
    public var velocityY:Number = 6;
    public function MoveBallSprite( color:uint ) {
        super( color );
        addEventListener( Event.ENTER_FRAME, updatePosition );
    }
    private function updatePosition( e:Event ):void {
        x += velocityX;
        y += velocityY;
        if (x>=465) velocityX = -velocityX;
        if (y>=465) velocityY = -velocityY;
        if (x<=0  ) velocityX = -velocityX;
        if (y<=0  ) velocityY = -velocityY;
    }
}

class DropBallSprite extends MoveBallSprite{
    public var gravity:Number = 0.6;
    public function DropBallSprite ( color:uint ) {
        super( color );
        addEventListener( Event.ENTER_FRAME, updateVelocity );
    }
    private function updateVelocity ( e:Event ):void {
        velocityY += gravity;
    }
}