私はFlashBuilder4.6を使用しており、http://eval.hurlant.com/のAS3Evalv0.3ライブラリを使用しています。
ライブラリは、私のFlex 4.6.0プロジェクトの1つでは完全に機能していますが、他のプロジェクトでは機能していません(EvalES4.swcライブラリの同じライブラリリンケージ「Mergeintocode」)。
最初のプロジェクトでは、次のコードが機能します。
private var compiler:CompiledESC = new CompiledESC;
public function compile(code: String) : ByteArray {
return compiler.eval(code);
}
他のプロジェクトでは、次のように失敗します 。ReferenceError:エラー#1065:変数のコンパイルが定義されていません。
エラーは、AS3Evalライブラリ(そのEvalES4.swcファイル)の次の行を参照しています。
var compile:Function = getDefinitionByName("ESC::compile") as Function;
ライブラリに、他のプロジェクトでTamarinESCを完全にロードするのに問題があるようです。
両方のプロジェクト(同じライブラリを使用していますが、まだチェックされています)がTamarinESCを正常にロードすることを確認しました。
// inside CompiledESC.as
private function loadESC():void {
var a:Array = [
new debug_abc as ByteArray,
new util_abc as ByteArray,
new bytes_tamarin_abc as ByteArray,
new util_tamarin_abc as ByteArray,
new lex_char_abc as ByteArray,
new lex_scan_abc as ByteArray,
new lex_token_abc as ByteArray,
new ast_abc as ByteArray,
new parse_abc as ByteArray,
new asm_abc as ByteArray,
new abc_abc as ByteArray,
new emit_abc as ByteArray,
new cogen_abc as ByteArray,
new cogen_stmt_abc as ByteArray,
new cogen_expr_abc as ByteArray,
new esc_core_abc as ByteArray,
new eval_support_abc as ByteArray,
new esc_env_abc as ByteArray,
]
ByteLoader.loadBytes(a, true);
}
これらのByteArrayクラスは、[Embed](ライブラリコードを調べる)を使用してSWC内に埋め込まれ、すべてのByteArrayは、どちらの場合もByteLoaderを介して初期化およびロードされます。
これまでのところ、コンパイルが私の最初のプロジェクトで機能しているのに、他のプロジェクトでは機能していない理由はわかりません。誰かが同様の経験や問題を引き起こす可能性のあるいくつかのヒントを持っていますか?
最高、ヤクブ