使用Loader载入外部swf传参数

如果你在做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的文档类或者时间轴上这么写:

参考代码: 如果你在做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的文档类或者时间轴上这么写:

参考代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 这个是我们要访问的变量  
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的文档类或者时间轴上这么写:

参考代码:

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

这样就OK了~

版权所有:为网站而疯狂-给站长一个五星级的家转载请注明来源,谢谢!

还不快抢沙发       我也不甘寂寞

欢迎留言

友情提示:
1、请勿发表色情、违法、商业广告等信息,谢谢。
2、留言想要有头像?请看 “我” 的。