Flash(AS3.0)で定数をグローバルで使うなんてことができたらいいなと思っていました(今も思っています)。rootのフレームアクションに定数を書いておいて「MovieClip(root).定数」なんていうのが安心確実なのでしょうが、定数クラスを用意してファイル自体を分けたほうがいじりやすいのではと思い、ジタバタしてみました。
制作中のゲーム「ミチク・ソード」において、マップのグリット数とその大きさを定数に入れるというシチュエーションです。マップの大きさは不変の予定ですが、マップの量が増えたらファイルを分ける可能性もありますので(いやでも同期取るのが面倒なので当分一気に読み込みますが)、なんとなく拡張性を意識しておきたいなあと魔が差してしまったわけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package { public class Constant { private var _COLS_NUMBER:int = 13; private var _ROWS_NUMBER:int = 9; private var _GRID_SIZE:int = 40; public function Constant() { } public function get COLS_NUMBER():int { return _COLS_NUMBER; } public function get ROWS_NUMBER():int { return _ROWS_NUMBER; } public function get GRID_SIZE():int { return _GRID_SIZE; } } } |
そして、呼び出す(ここではフレームアクション)
1 2 3 4 |
import Constant; const COLS_NUMBER:int = new Constant().COLS_NUMBER; const ROWS_NUMBER:int = new Constant().ROWS_NUMBER; const GRID_SIZE:int = new Constant().GRID_SIZE; |
ひょー。なんか気持ち悪い書き方しているような気がするけど動いています。いいんです。動けば。
かくして、定数を外に出すことに成功しました。