快速业务通道

AS教程:加载与被加载swf内部变量相互调用

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-07

工作中遇到需要使加载与被加载swf(as2编写)内部变量互相调用的问题,使用loadMovie。以下是我在网络上找到资料:

在as2中,无论你用loadMovie还是loadClip加载进来一个swf,只要知道他们的层级关系,都可以用this、_parent等轻松相互控制。下面以main.swf和sub.swf为例:

main.swf主时间轴第一帧代码:

varmy_mcl:MovieClipLoader=newMovieClipLoader();
varmclListener:Object=newObject();
//加载完毕
mclListener.onLoadInit=function(target_mc:MovieClip):Void{
main_btn.onRelease=function(){
sub_mc.mainCallSub();//点击main.swf主场景名为main_btn的按钮,调用sub.swf主场景名为mainCallSub的函数
}
}
my_mcl.addListener(mclListener);
sub_mc._lockroot=true;//锁定被加载swf的主时间轴,让_root统一指向main.swf的主时间轴
my_mcl.loadClip("sub.swf",sub_mc);//把sub.swf加载到main.swf主场景名为sub_mc的剪辑中。
//被sub.swf访问的函数
functionsubCallMain(){
trace("subCallMain!");
}

sub.swf主时间轴第一帧代码:

sub_btn.onRelease=function(){
this._parent._parent.subCallMain();//点击sub.swf主场景名为sub_btn的按钮,调用main.swf主场景名为subCallMain

的函数
//当然,也可以直接一点,用_root.subCallMain();但前提是main.swf上加上sub_mc._lockroot=true;不然访问的是自己的时间轴
}
//被sub.swf访问的函数
functionmainCallSub(){
trace("mainCallSub!");
}

在main.swf中:

varloader:MovieClip=this.createEmptyMovieClip("loader",1);//创建一个空影片剪辑,深度为1

loader.loadMovie("login.swf");//加载同文件夹下的login.swf

在login.swf中:

this._lockroot=true;//此句必不可少,表示对已加载影片中_root的引用都会指向已加载影片的_root,而不是加载器的_root

_root._parent.welcome.text=".......";//此句可以实现对main.swf中welcome实例的值进行设置

_root.unloadMovie();//此句可以卸载login.swf
关键词:加载

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号