加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

加载含有stage代码的swf

发布时间:2020-12-15 07:04:26 所属栏目:百科 来源:网络整理
导读:加载一个“111.swf”文件,代码如下: var loader:Loader=new Loader(); loader.load(new URLRequest("111.swf")); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,load_COM); function load_COM(e):void { ? var mc:MovieClip=e.target.content

加载一个“111.swf”文件,代码如下:

var loader:Loader=new Loader();
loader.load(new URLRequest("111.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,load_COM);
function load_COM(e):void
{
?var mc:MovieClip=e.target.content;
?addChild(mc);
}

????代码看起来不错,但是报错了:“TypeError: Error #1009: 无法访问空对象引用的属性或方法。at 111_fla::MainTimeline/111_fla::frame1()”为什么呢?111.swf也是用AS3写的,里面只有一行代码:

stage.addChild(mc);

????原因是:在111.swf的代码中使用了stage。

????我们知道,Stage是是专门管理舞台的一个类,这个类只有一个唯一默认的实例——stage。stage这个唯一的实例称之为舞台,是所有显示对象的最终容器,在一个swf中,必定有一个stage也只能有一个stage。如果主swf加载外部的swf怎么办?外部的swf加载进来后,就象一个mc一样添加到主swf中,舞台只有一个,就是主swf那个。

????那问题就明显了,既然舞台(stage)只有一个,被加载的swf中如果用了stage,在加载未完成前,舞台还没出现呢!stage当然就是“空对象”。

????针对这个问题,在被加载的swf中代码要适当处理,注意:是被加载的swf哦,主swf代码不用变。被加载的swf代码如下:

if(stage)
?{
??stage.addChild(mc);
?}else
?{
??addEventListener(Event.ADDED_TO_STAGE,addTo);
?}

function addTo(e):void { ?stage.addChild(mc); }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读