分享

【Flxe】Flex中调用SWFLoader对象为空的解决方式

 xihayouyi 2012-06-08

【Flxe】Flex中调用SWFLoader对象为空的解决方式

(2011-04-27 17:28:00)
标签:

杂谈

分类: 工作经验总结之Flex

在Flex中,调用SWFLoader的时候,有的时候,需要调用里面的方法,可是问题来了,我们该如何判断SWFLoader load进来的swf已经完成了本身的初始化呢?

我们知道,在Flex编译后的swf与flash编译出来的swf最大的区别为,Flex编译出来的只包含两帧,一个初始化帧,一个执行帧。好啦,我们明白这个后,就可以解决上面的问题啦。

SWFLoader 在load source中的swf,我们可以监听SWFLoader的init事件,这个事件在派发的时刻为,load的swf已经初始化完成了第一帧,这个时候,我们是可以取得load进来的swf的对象,然后我们再这个事件中监听load进来的swf的FlexEvent.APPLICATION_COMPLETE。当我们收到了FlexEvent.APPLICATION_COMPLETE事件后,这个时候,我们就可以调用load进来的swf的方法了,代码如下:

 

初始化加入swf对象

protected function creationCompleteHandler(event:FlexEvent):void
   {
    tempSWFLoader = new SWFLoader();
    tempSWFLoader.percentHeight = 100;
    tempSWFLoader.percentWidth = 100;
    tempSWFLoader.left = "20";
    tempSWFLoader.top = "20";
    tempSWFLoader.bottom = "20";
    tempSWFLoader.right = "-2";
    tempSWFLoader.maintainAspectRatio = false;
    tempSWFLoader.loaderContext = new LoaderContext(false,ApplicationDomain.currentDomain);
    tempSWFLoader.scaleContent = true;
    tempSWFLoader.loadForCompatibility = false;
    tempSWFLoader.mask = maskCanvas;
    tempSWFLoader.addEventListener(Event.INIT, initHandler);
    tempSWFLoader.source = "aaaa.swf";
    this.addElement(tempSWFLoader);    
    this.addEventListener(RightClickManager.RIGHT_CLICK,mouseClick);
   }

 监听swf的初始化事件

private function initHandler(event:Event):void {
    event.target.content.addEventListener(FlexEvent.APPLICATION_COMPLETE,
     applicationCompleteHandler);

   }

监听load进来的swf的FlexEvent.APPLICATION_COMPLETE
   private function applicationCompleteHandler(event:Event):void { 
    event.target.application.getParameteList();     
   }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多