既存の html/JavaScript ファイルを Flex に変換しようとしています。コードをjavascriptからactionscriptにコンパイルするコンパイラがあるかどうかを調べるために、いくつかの調査を試みました。私が見る限り、actionscript を javascript に変換する方法はたくさんありますが、その逆の方法は見つかりませんでした。それを行う方法があるかどうか誰かが知っていますか、それとも自分のツールを書くべきですか?
3 に答える
AS3 は厳密に型指定された言語であり、Javascript は厳密に型指定されていないため、これはうまく機能しないことがわかると思います。そのようなコンパイラが存在する場合でも、ActionScript は、多数の汎用オブジェクトを作成するという事実から、問題を抱えている可能性があります。
要するに、ActionScript から Javascript への変換は機能します。これは、Javascript の方が寛容ですが、多くの構造が失われるためです。継承、型など
しかし逆に言えば、ActionScript が必要とする構造に戻す方法はありません。
コメンターの 1 人が言及したように、この変換を手動で行う必要がある場合があります。
もう 1 つのアイデア: Flash プレーヤーは Javascript と通信できます。Javascript を ActionScript に変換する必要はないかもしれません。代わりに、ExternalInterface クラスを介して Flash SWF ファイルと通信する関数をいくつか作成するだけです。Javascript を Javascript に保持するだけです。
完全な書き直しを強くお勧めします。どちらも (JS と AS) ECMA 標準言語であるため、それほど時間はかかりません (間違っていたら訂正してください)。
ただし、自動化された方法が本当に必要な場合は、次を試してください。
- JS を haxe に変換する
- 出力 Haxe を AS にコンパイルする
それは私の心の中で最も簡単な解決策です。
独自のツールを作成する方がよいでしょう。JavaScript を記述する方法は非常に多くあり、型付けされていないことも含めて、すべてを変換する万能のソリューションを記述することは困難です。ライブラリの場合、コードからコードへの変換ではなく、オペコードを変換する方が理にかなっているかもしれませんが、その多くは JavaScript の記述方法に依存します。
苦しいでしょうね、きっと。
- js は型指定されていませんが、actionscript は「型指定されています」。すべてがオブジェクトになる可能性があり、うまく機能すると思います
- js 関数のスコープは別の方法で処理されます。
- actionscript での無名関数の呼び出しは一般的に嫌われており、パフォーマンスに悪影響を及ぼします
- actionscript の setTimeOut のようなものも眉をひそめます。enter_frame と timer はおそらくより便利です
- actionscript のガベージ コレクションは、イベントのディスパッチと同様に、少し異なる方法で処理されます。