Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux编程 > » 正文

AS3 元件内访问主时间轴的变量和函数

来源: xcntime 分享至:

 元件调用主时间轴里面定义的函数

 

先说解决方法(以调用主时间轴的gotoAndPlay()函数为例):

//方法1,共N种解决方式,效果都一样
(this.root as MainTimeline).gotoAndPlay(2);
(this.root as Object).gotoAndPlay(2);
(this.root as MovieClip).gotoAndPlay(2);
Object(this.root).gotoAndPlay(2);
MovieClip(this.root).gotoAndPlay(2);
MainTimeline(this.root).gotoAndPlay(2);

//trace(this.root.numChild);
stop();
//方法2
//var test:Object=this.root;
//test.gotoAndPlay(2);

//方法3
//root["gotoAndPlay"](2);

 

 

最后说原因:

对于加载的 SWF 文件中的显示对象,root 属性是此 SWF 文件所表示的显示列表树结构部分中的顶级显示对象。 对于代表已加载图像文件的位图对象,root 属性就是位图对象本身。 对于第一个加载的 SWF 文件的主类的实例,root 属性就是显示对象本身。 Stage 对象的 root 属性是 Stage 对象本身。 对于任何未添加到显示列表的显示对象,root 属性设置为 null,除非它已添加到符合以下条件的显示对象容器:不在显示列表中,但属于已加载 SWF 文件中顶级显示对象的子级。

 例如,如果您通过调用 Sprite() 构造函数方法创建新的 Sprite 对象,则其 root 属性将为 null,除非您将其添加到显示列表中(或添加到不在显示列表中但属于 SWF 文件中顶级显示对象的子级的显示对象容器中)。

对于加载的 SWF 文件,即使用于加载文件的 Loader 对象未在显示列表中,SWF 文件中的顶级显示对象也会为其本身设置 root 属性。 在 Loader 对象添加为对其设置 root 属性的显示对象的子级前,它不会设置自己的 root 属性。

 

编译时,元件还没有添加到显示列表里面,这时元件里面的this.root的值是null,还没有给赋值,所以编译出错。。用as符给root强制转换类型为一个非空值,就可以通过编译了。  
 编译通过开始运行时,元件开始显示时,this.root会被赋值实例话,就可以调用主时间轴下得变量和函数了  
 AS3编译比较严格,所以就爆出了错误1061: 调用可能未定义的方法 。之所以提示是“可能未定义的方法”,是因为root是动态类的实例化的因素吧。   个人理解,若有偏差,欢迎指正。


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史