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

[wonderbook] 車をいっぱい走らせてみました

Get Adobe Flash player
by ongaeshi 26 Dec 2009
/**
 * Copyright ongaeshi ( http://wonderfl.net/user/ongaeshi )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/qF87
 */

// forked from ongaeshi's forked from: 車が動くアニメーション
// forked from 9re's 車が動くアニメーション
package {
    import flash.display.Sprite;
    import flash.events.Event;
    
    public class AnimationExample extends Sprite
    {
        // 車のクラス
        private var _car:Car;
        private var _cars:Array = new Array();
        
        public function AnimationExample() 
        {
            // 車を生成
            _cars.push(new Car(0xf8b500, 10, 50, this));
            _cars.push(new Car(0xff0000, 20, 100, this));
            _cars.push(new Car(0x00ff00, 30, 150, this));
            _cars.push(new Car(0x0000ff, 40, 200, this));
            _cars.push(new Car(0xffff00, 50, 250, this));
            _cars.push(new Car(0x00ffff, 60, 300, this));
            _cars.push(new Car(0xff00ff, 70, 350, this));
            _cars.push(new Car(0x000000, 80, 400, this));

            // 1フレーム毎に実行する処理にmoveCarを追加する
            addEventListener(Event.ENTER_FRAME, moveCar);
        }
        
        private function moveCar(e:Event):void 
        {
            _cars.forEach(function(item:*, index:int, array:Array):void { item.move(); });
        }
    }
}

import flash.display.Sprite;

class Car extends  Sprite {
    // ガソリンの量最初は入っていない = 0
    private var _gas:int = 0;
    
    // コンストラクタ
    public function Car(_fillColor:uint, _amount:int, _y:int, parent:Sprite) {
        _draw(_fillColor);
        putGas(_amount);
        y = _y;
        parent.addChild(this);
    }
    
    // ガソリンを入れる。
    public function putGas(_amount:int):void {
        if (_amount < 0) {     // もしガソリンの量が0以下だったら
            return;            // 何もしないで、ここで終了
        }
        
        _gas += _amount;       // $amountだけ_gasの量を増やす
    }
    
    // 車を動かす
    public function move():void {
        if (_gas > 10) {        // ガスの残量が10より大きい場合
            x += 5;             // x座標を5だけ増やす
        } else {                // ガスの量が10以下の場合
            x += _gas / 2;      // 残りのガスの量によって動きが変わる
        }
        
        _gas--;                 // 車が動くとガスは減る
        if (_gas < 0) {         // もしガスの量が0より小さいなら
            _gas = 0;           // ガスの量を0にセットする
        }                       // ガスの量はマイナスにはならない
    }
    
    // 描画メソッド。privateなので外からは見えない
    // 車の形や色は製造される時に決まってしまうので外部からは
    // 呼べない
    private function _draw(_fillColor:uint):void
    {
        // 車輪を書く
        graphics.beginFill(0x333333);
        graphics.drawCircle(10, 20, 5);
        graphics.drawCircle(45, 20, 5);
        graphics.endFill();
        // 車体を書く
        graphics.beginFill(_fillColor);
        graphics.moveTo(0, 10);
        graphics.lineTo(15, 0);
        graphics.lineTo(30, 0);
        graphics.lineTo(40, 10);
        graphics.lineTo(50, 10);
        graphics.lineTo(55, 15);
        graphics.lineTo(55, 20);
        graphics.lineTo(0, 20);
        graphics.endFill();
    }
}