resumed ActionScript porting

| No Comments | No TrackBacks

今週は、FM音源まわりで音楽ソフトを作っているから興味ある人を募集するという人がいて、話を聞いてみたら、動いているコードが無いどころか、これからやるはずの設計も実装もMMLコンパイラ以外は他人に丸投げ、つまり音源ドライバよろしく、みたいな、普通だったら呆れて帰るような話を振られて、とりあえず何かコードを書いてみて出来るか出来ないか考えてみよう、と思いながら、何かしら調べておくという話をしてきた。

とはいえ今さらそういうソフトをゼロから書く気はさらさら起きないので、以前途中までやっていたActionScriptベースのコードを使い回すことにした。今回はプラットフォームとしてC#を使う具体的な理由が出来てしまったし、再始動するにはちょうど良いだろう。

もっともASから移植したコードには既にかなり手を入れていて、コンパイルも通っているため、いまさら自動生成部分を改良するのは厳しい。自動生成コードにはいずれにせよ大規模に手を加えることはないだろうし、後からコードトランスレーターを改良することも出来るだろうとは思っている。

というわけで、既にコンパイルが通るようなコードを、実際に動かすためには、FlashのAPIを実装しなければならない。コード上で明示的に参照されていたFlashのAPIはそれほど多くないのだけど、暗黙的に利用されているFlashの仕組みは未知数だ。あまり多いとは考えていないけど。

今のところ自動生成コードで大きく足りていなかったのは、Eventまわりのコードだ。ASでは、各クラスについて、利用出来るコンポーネントイベントの種類を登録することになっているのだけど、宣言の中に引数型も含まれているので、C#ならイベントを生成するようにしておけば良かったと思っている。まあ実際に使用されている数は多くないので、手作業で追加することは十分できる。

実際にコードを動かしてみてハマったASの特性は、Arrayの動作だ。ASのArrayは後から要素を追加出来るので、C#の配列にはせず、Listなどにする必要がある。配列なので、サイズ指定で初期化するコードについては、要素の確保が必要になるのだけど、変数の型を解決しないとサイズなのかどうか分からないものなどがあって、これは相当するコードについてのみ手作業でアロケーションに置き換えている。自動化するにはちゃんとした型解決が必要だろう。

この辺までたどり着くまででもある程度時間がかかったので、とりあえずここまで。

No TrackBacks

TrackBack URL: http://veritas-vos-liberabit.com/noteon/mt-tb.cgi/168

Leave a comment