[wonderbook] 車をいっぱい走らせてみました
/**
* 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();
}
}