Actionscript 3 as3scriptinglib(动态代码加载)正在编译代码,但未执行
我在项目实施中遇到问题 代码已编译,但根本没有执行Actionscript 3 as3scriptinglib(动态代码加载)正在编译代码,但未执行,actionscript-3,air,flashdevelop,Actionscript 3,Air,Flashdevelop,我在项目实施中遇到问题 代码已编译,但根本没有执行 public function Main():void { var loader:CompilerLoader = new CompilerLoader(); loader.addEventListener(CompilerEvent.INIT, compilerInit); loader.load("ESCompilerSWF.swf"); trace("INIT"); } private function
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执行的。
帮助。我已经解决了这个问题。执行脚本的类被垃圾收集,因此我更改:
var script:IScript = compiler.compileAndLoad(str, new ScriptContext(this));
函数外部的变量,如:
script = compiler.compileAndLoad(str, new ScriptContext(this));
它是有效的
:)