BulkLoader加载AVM1Movie显示的解决方法

      今天在使用BulkLoader的时候,碰到了一个棘手的问题,就是如何显示已加载的这个AVM1Movie。试过了很多种方法,在Google也狂搜一通,都未找到解决方案。以下是测试代码:
import br.com.stimuli.loading.BulkLoader;
import flash.events.Event;

var bk:BulkLoader=new BulkLoader("main swf");
bk.add("http://www.xxx.com/xx.swf");
bk.add("http://www.xxx.com/xx.jpg");
bk.addEventListener(BulkLoader.COMPLETE,oncomplete);
bk.start();


function oncomplete(e:Event){
    var mc=bk.getAVM1Movie("http://www.xxx.com/xx.swf");
    addChild(mc)   //添加失败
    var jpg=bk.getBitmap("http://www.xxx.com/xx.jpg");
    addChild(jpg)  //添加成功

}

经跟踪测试,mc是有值的,而不是一个Null对象,但导出的时候会提示addChild(mc)这行错误,提示的错误是“ArgumentError: Error #2180: 如果 AVM1 内容(AS1 或 AS2)已加载到 AVM2 (AS3) 内容中,则不可将其移动到 displayList 的其他部分。”,从这个错误可以分析出,这个swf是已经成功加载了的,但为何addChild(mc)会失败而addChild(jpg)则可以呢?后来跟踪trace(mc.parent)发现mc.parent是一个Loader对象,至此推断bk.getAVM1Movie返回的是Loader.ContentLoaderInfo这个对象,如果这样,问题应该很好解决了,只要把addChild(mc) 改为addChild(mc.parent)就可以了,oh,yeath! 

你可能感兴趣的:(loader)