| Package | net.wonderfl.game.infinity_tank.development |
| Class | public class TankBase |
| Inheritance | TankBase flash.display.Sprite |
| Property | Defined by | ||
|---|---|---|---|
| _bulletRenderer : String
この戦車の弾のswfのurl.
| TankBase | ||
| _scene : BattleScene
ゲームの現在の状態が保持されています.
| TankBase | ||
| showStats : Boolean [write-only]
デバッグ用.
| TankBase | ||
| _world : GameWorld
プレビュー・モードでの物理演算用です.
| TankBase | ||
| Method | Defined by | ||
|---|---|---|---|
|
TankBase()
| TankBase | ||
|
action():int
ここでタンクの次の行動を実装します.
| TankBase | ||
|
draw($bitmapData:BitmapData):void
タンクの見た目を描画します.
| TankBase | ||
|
fire():void
このタンクが弾を発射するときに呼ばれるコールバックです.
| TankBase | ||
|
hit():void
タンクに弾が当たったときに呼ばれるコールバックです.
| TankBase | ||
| Method | Defined by | ||
|---|---|---|---|
|
_init():void
このクラスのインスタンスがステージ上に配置されたときに実行されるメソッド.
| TankBase | ||
|
enterFrameHandler(e:Event):void
wonderflの画面内のプレビュー・モード時にのみENTER_FRAMEのイベント・ハンドラとして登録されます.
| TankBase | ||
| _bulletRenderer | property |
protected var _bulletRenderer:String
この戦車の弾のswfのurl.
swfのドキュメントクラスは、BulletRendererクラスの拡張でなければなりません.
See also
| _scene | property |
protected var _scene:BattleScene
ゲームの現在の状態が保持されています.
ゲームの現在の状況はこのプロパティから取得します.
| showStats | property |
showStats:Boolean [write-only]デバッグ用.
Implementation protected function set showStats(value:Boolean):void
See also
| _world | property |
protected var _world:GameWorldプレビュー・モードでの物理演算用です. ゲーム・モードでは使われることはありません.
| TankBase | () | constructor |
public function TankBase()
| _init | () | method |
protected function _init():voidこのクラスのインスタンスがステージ上に配置されたときに実行されるメソッド. wonderflの画面内で戦車をプレビューするときにだけ実行されます.
| action | () | method |
public function action():intここでタンクの次の行動を実装します.
処理落ちが無ければ、30FPSで5フレームに1回このメソッドは呼ばれます.FPSが正常値であれば、1/6秒間隔で実行されます.
Returnsint — Commandクラスで定義されている整数のフラグを利用します.
|
See also
override public function action():int
{
// 弾を撃つ
var action:int = Command.FIRE;
// タンクを前進させる.
action |= Command.TANK_MOVE_FORWARD;
// 敵の位置を取得
var enemyPos:WVector2D = _scene.enemyTankPosition;
// 自分の位置を取得
var myPos:WVector2D = _scene.myTankPosition;
// 自分の位置からみた敵の位置を取得
enemyPos.subtract(myPos);
// 自分の位置からみた敵の位置を方角に直す
var angle:Number = Math.atan2(enemyPos.y, enemyPos.x);
// 自分の砲台が向いている方角と敵の方角との差をとる
angle -= (_scene.myGunAngle + _scene.myTankAngle);
// 角度を0~2πに直す.
angle = WMath.modulo2PI(angle);
// 砲台を適切な角度に向ける.
// 角度が180度以下なら敵は砲台より右側にいる.
if (angle < Math.PI) action |= Command.GUN_TURN_RIGHT;
// 角度が180度以上ということは敵は砲台より左側にいる.
else if (angle > Math.PI) action |= Command.GUN_TURN_LEFT;
return action;
}
| draw | () | method |
public function draw($bitmapData:BitmapData):voidタンクの見た目を描画します.
_scene.myTankPositionで位置を取得します.
これらの位置が中心座標となっていることにご注意下さい.
戦車の大きさは、幅30px X 縦50pxで、x軸方向を0度とします.
_spBatteryは_spTankの子供のスプライトです.
もし、タンクを親子関係にしないのであれば、
_spBattery.rotation = _scene.myGunagnle + _scene.myTankAngle
となることにご注意下さい.
$bitmapData:BitmapData — $bitmapData ステージと同じ大きさのビットマップが渡されます.
|
See also
private var _spBattery:Sprite; // 砲台のグラフィック
private var _spTank:Sprite; // 戦車のグラフィック
private var _mat:Matrix; // drawメソッドでの表示位置の調整用
private var _ctfm:ColorTransform = new ColorTransform(1, 1, 1, 0); // BitmapDataを消去する
override public function draw(bitmapData:BitmapData):void
{
// 砲台を回転させる.
// _spTank.addChild(_spBattery);
_spBattery.rotation = _scene.myGunAngle * 180 / Math.PI;
// タンクの座標と傾きをセットする
_mat.identity();
_mat.rotate(_scene.myTankAngle);
_mat.translate(_scene.myTankPosition.x, _scene.myTankPosition.y);
// bitmapDataを一旦クリアする
bitmapData.colorTransform(bitmapData.rect, _ctfm);
// bitmapDataを描画する
bitmapData.draw(_spTank, _mat, null, null, null, true);
}
| enterFrameHandler | () | method |
protected function enterFrameHandler(e:Event):voidwonderflの画面内のプレビュー・モード時にのみENTER_FRAMEのイベント・ハンドラとして登録されます. 通常のゲーム・モードでは使われません.
Parameterse:Event — e
|
| fire | () | method |
public function fire():voidこのタンクが弾を発射するときに呼ばれるコールバックです. 人間対AIのゲーム・バランスのために、同画面内に最大3発しか弾は撃てません.実際に弾が撃たれたかどうか を調べたり、弾が発射されるときに音を鳴らすなどの処理を書いたりします.
| hit | () | method |
public function hit():voidタンクに弾が当たったときに呼ばれるコールバックです.