2014-04-18 59 views
0

我在項目中執行https://code.google.com/p/as3scriptinglib/時遇到問題。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

我已經解決了這個問題。時執行的腳本類是垃圾回收,所以我改變:

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

給一個變量的函數外,如:

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

和它的作品。

:)