as3scriptinglib(动态代码加载)正在编译代码但不执行

时间:2014-04-18 05:35:47

标签: actionscript-3 air flashdevelop

我在项目中实施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执行的。 帮助

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。执行脚本的类是Garbage Collected,所以我改变了:

var script:IScript = compiler.compileAndLoad(str, new ScriptContext(this));

到函数外的变量,如:

script = compiler.compileAndLoad(str, new ScriptContext(this));

它有效。

:)