Fdream's Blog
专注于WEB前端开发
Powered by Google

load外部swf并共享变量

20 晴天 2008-11
Fdream 发表于 Flash, 已被阅读 1010 次, 评论 0 条
关键词:as3 as actionscript
[ 阅读字体大小: ]

如果你在做flash开发,这个应该是经常碰到的事情:用a.swf加载b.swf,然后需要在b.swf中调用a.swf的方法或者变量。在as2里面实现这个很简单,root就是万能的。在a.swf中,用loadMovie的方法load b.swf到一个MovieClip后,b.swf就可以通过_root或者_parent来访问a.swf中的变量了。不过这招在AS3中已经不灵了,得换个方式。

在as3中,有这样一种方式可以实现:在a.swf中,使用Loader类来load b.swf,在load完成之后,调用b.swf中的一个方法,把a.swf的引用传入或者把相应变量传入给b.swf。一个简单的例子如下:

在a.swf的文档类或者时间轴上这么写:

参考代码: [复制代码] [保存代码]

// 这个是我们要访问的变量
var ab:String = '1234';
// 加载b.swf
var ldr : Loader=new Loader();
ConfigureListeners(ldr.contentLoaderInfo);
ldr.load(new URLRequest("b.swf"));

function ConfigureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, CompleteHandler);
}

function CompleteHandler(e : Event):void {
this.addChild(e.target["content"]);
// 调用b.swf中的方法
e.target["content"].getP(this);
}

在b.swf的文档类或者时间轴上这么写:

参考代码: [复制代码] [保存代码]

function getP(p:Object):void{
// 访问a.swf中的变量ab
trace(p.ab);
}

这样就OK了~

Related articles 您可能对这些文章也感兴趣:
Related comments 与该文相关的评论:(我也想说几句)
Add a comment 我来说两句: 
禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
arrow
用户名:   密码:  (匿名可不写) 同时注册?
验证码:   看不清?换个图片  看不清楚?换个图片

 
Copyright © 2005-2008,Fdream All Rights Reserved
Processed in 0.9062674 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号