クラスの初期データを構造体の配列で作るには
ActionScript2のゲームでクラスとして構造体でシナリオデータを持つ必要が生じて書き方で悩みました。
(もっとよい持ち方があるのかもしれませんが・・)
シナリオデータは、「歩く」シナリオや「向きを変える」などがあり、シナリオによって必要であったり不必要であったりするプロパティがあるため、必ずしも全てのプロパティを書かなくても良いflashの構造体が便利だと思いました。
また、シナリオデータをほどほどに隠蔽したい(それほどがっちり隠蔽しなくてもよいがソースはわかりやすくしたい)という思惑があり、グローバル変数を#includeするのではなく、クラスを使いたいなと思いました。
またシナリオデータはランタイムで書き換える必要がないものです。
まずは、クラスの定義です。ScenaioData.asを作り、
class ScenarioData{
public static var Scenario:Array = new Array();function ScenarioData(){
Scenario.push({
KIND:”ANIME”,
CHARACTER:”hoge”,
ANIME:”TURN”,
START_DIR:”NE”,
START_EFFECT:”NASHI”,
WAIT_TIME:30
});Scenario.push({
KIND:”ANIME”,
CHARACTER:”hoge”,
ANIME:”TURN”,
START_DIR:”EE”,
START_EFFECT:”NASHI”,
WAIT_TIME:30
});
}
}
クラス変数の定義で、public staticとし、new Array()します。
コンストラクタ ScenaioData()の中で、実際のシナリオデータをpushしていきます
仕込む側は以上で、一方、呼び出す側は、
var scd:ScenarioData = new ScenarioData(); //<-インスタンス化してメモリに展開しておく?
ScenarioData.Scenario[1].START_DIR;
とし、アクセスします。staticなデータは、インスタンスの名ではなく、上記のようにクラス名.データ名という具合にズバリと呼び出します([1]などとせずに、順繰りにpopしてもよいでしょう)
いやはや、ハマリが解決してよかったです。
http://9server.net/ の最初のサンプルを参考にさせていただきました。ありがとうございます。
トラックバック URL :
コメント (0)