我在项目中实施https://code.google.com/p/as3scriptinglib/时遇到问题。
代码已编译,但它不会被执行。
public function Main():void {
var loader:CompilerLoader = new CompilerLoader();
loader.addEventListener(CompilerEvent.INIT, compilerInit);
loader.load("ESCompilerSWF.swf");
trace("INIT");
}
private function compilerInit(event:CompilerEvent):void {
var compiler:ICompiler = event.compiler;
trace("PREPARE",compiler.initialized);
var str:String = 'trace("HELLO WORLD");';
try {
var script:IScript = compiler.compileAndLoad(str, new ScriptContext(this));
script.addEventListener(ScriptErrorEvent.SCRIPT_ERROR, trace);
trace("Script created");
} catch (e:Error) {
trace("ERROR", e.message);
}
trace("READY");
}
它输出:
INIT
PREPARE true
Script created
READY
因此,正如您所看到的,代码不是由as3scriptinglib执行的。 帮助
答案 0 :(得分:0)
我已经解决了这个问题。执行脚本的类是Garbage Collected,所以我改变了:
var script:IScript = compiler.compileAndLoad(str, new ScriptContext(this));
到函数外的变量,如:
script = compiler.compileAndLoad(str, new ScriptContext(this));
它有效。
:)