我正在使用FlashBuilder 4.6并使用来自:http ://eval.hurlant.com/ 的AS3Eval v0.3 库
该库在我的一个 Flex 4.6.0 项目中完全正常工作,但在另一个项目中没有(与 EvalES4.swc 库的相同库链接“合并到代码”)。
在第一个项目中,以下代码有效:
private var compiler:CompiledESC = new CompiledESC;
public function compile(code: String) : ByteArray {
return compiler.eval(code);
}
在另一个项目中,它失败了: ReferenceError: Error #1065: Variable compile is not defined。
该错误是指 AS3Eval 库中的以下行(即 EvalES4.swc 文件)
var compile:Function = getDefinitionByName("ESC::compile") as Function;
看起来图书馆在另一个项目中完全加载 Tamarin ESC 时遇到问题。
我已经检查了两个项目(它们使用相同的库......但仍然检查)通过成功加载 Tamarin ESC
// 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 进行初始化和加载。
到目前为止,我还没有找到任何线索,为什么编译对我的第一个项目有效,但对另一个项目无效。有没有人有类似的经历或一些提示可能导致问题?
最好的,雅库布