AS2toAS3

前回もちょこっと書いたけど、AS2コーディングされているflaファイルをAS3に再コーディングした。


タスクはだいたいこんな感じ。

  1. _xとか_yとかプロパティのアンダースコアをとる
  2. onPressとかonEnterFrameとかイベントハンドラを書き換える
  3. var foo = "string" とかの型宣言を指定する
  4. function bar(hoo){}とかの引数と戻り値を指定する
  5. xml周りの処理を書き換える
  6. _global変数を書き換える
上記1~4まではそんなに大変な作業ではないし、FlashCS3の「検索して置換」を使うと殊の外早く終了。
問題は5番と6番。

まず5番だが、AS2だとXMLクラスでidMap["foo"]を使っていたので、全部descendants().(attribute("id") == "foo")に書き換え。


そして6番。この部分は単純にコーディングだけの問題ではなく設計にも関わってくるので、色々考えた結果デザインパターンで言うところのシングルトンモデルのクラスを一つ用意することにした。


具体的にはGlobalと言うそのまんまなクラスを作って、インスタンスを静的メンバとして登録。これでどこからでも参照可能にする。Globalにはその他の必要なプロパティを色々定義しておく。各タイムラインからはこんな感じで呼び出し。trace(Global.instance.rootPath); // http://exsample.com/


それと、シングルトンモデルとしては反則かもしれないけど、
一度だけnew Global()が必須で、その際にサイトルートやxmlパスなど色々引数を指定する。でxmlデータもGlobalが勝手に取得してGlobal.instance.dataXMLとして参照可能にする。


初めはもっとシンプルに静的メンバだけ使って_globalの代替えにしようかと思ったけど、コードの再利用性とかを考えるとこっちの方が良さそうな気がする。

Trackback

http://memo.kappa-lab.com/mt-tb.cgi/183

Leave your comment :

(いままで、ここでコメントしたことがないときは、コメントを表示する前に承認が必要になることがあります。そのときはしばらくお待ちください。)




RSS + Contuct

  • rss
  • email

Credit

Copyright (C) 2007 kappa-lab.com.
All Rights Reserved.