Java から ActionScript3 に変換
先日公開した、JavaからActionScript3へのソースコード変換ソフト「Java To ActionScript3 Converter」を使って変換した結果を、手作業で最終的に変換するために必要なよくある作業を書き留めておきます。
※この記事は随時更新していきます。
■オーバーロードをまとめる(同名のメソッドを一つに合体する)
Javaは同じ名前のメソッドを複数持てますが、AS3では同じ名前のメソッドおよびコンストラクタを持てません。
代わりにAS3では、引数にデフォルト値を持たせることができるので、Javaの複数メソッドを一つにまとめることが可能です。
・コンストラクタを、うまく1つにできない場合は「public static function createA( 引数 ):A 」というスタティックメソッドにするなどの方法が考えられます。
・メソッドを、1つにできない場合は「getXxx() , getXxxAt()」のように名前を変えるなどの方法が考えられます。
■スコープごとに定義された同名の変数を...
Javaでは、スコープごとに変数を定義できますが、AS3ではスコープ内に定義した変数もメソッド全体で参照できてしまいます。このため、AS3では「変数定義が重複している」という警告になります。
//Javaの場合
for( 略 ){ int t = 0 ; }
for( 略 ){ int t = 0 ; }//もう一度 t を使っても Java では問題なし
//ActionScript3の場合
for( 略 ){ var t:int = 0 ; }
for( 略 ){ var t:int = 0 ; }//ActionScript3では、重複定義という警告になる
この警告は放置しても直接的な問題はありませんが(*1)、私は念のためそろぞれの変数名を手作業で変えて使っています。
*1. ActionScript3では、メソッド内で再度同じ変数を定義しても、前の変数が使いまわされるため予期せぬ動作になりえる可能性がありますが、Javaから移植した場合、ローカル変数は参照前に値が初期化されていないとエラーになるため、使用前に毎回値がリセットされているはずです。しかし、やはり別の変数を再定義する方が無難だと思われます。
■メソッドオーバーライド
オーバーライドするときは、サブクラス側のメソッドに override をつける。
public override function someMethod( ) : void {
■staticの初期化
Javaの static{ 初期化処理.. } による初期化は、ActionScript3では、初期化処理..をクラス内のメソッドの外に直に記述すればよい模様。※この部分は次回バージョンアップで対応予定
public class A {
trace("ここに初期化を直に書ける") ;
}
(随時更新予定)
3月 28, 2008 ActionScript, Java | Permalink | コメント (0) | トラックバック (0)
