Flash加载swf后互相调用函数、变量

假定加载其它swf文件的swf为父swf,被加载的swf为子swf。

情况1:父swf调用子swf中的函数、变量。

使用Loader.contentLoaderInfo的监听器。具体方法:

1、转为EventDispatcher并添加监听器,监听完成事件。

EventDispatcher(Loader.contentLoaderInfo).addEventListener(Event.Complete,loaded);

2、设计完成事件处理方法loaded

function loaded(e:Event):void{

//假定子swf中有函数sayHi(),那么可以这样调用:

e.target.content.sayHi();

}

由于是在父swf中执行方法,也可以设计接受父对象的方法,把父对象的引用传给子swf。这样子swf也就能够执行父swf中的函数,获取其变量了。参考:http://www.68design.net/Web-Guide/Flash/50014-1.html

情况2:子swf调用父swf中的函数和变量。

被加载的子对象一般被保存在Loader对象中。而Loader对象又通常被加到父swf中。这样我们就可以通过this.parent一层一层取得父对象了。前提是Loader对象要被addChild到父对象中。例如:

假如父swf中有变量var name:String = "ljf",并且通过Loader对象myLoader加载子swf,并执行了addChild(myLoader),则,我们可以在子swf中这样获取到name值:

Object(this.parent.parent).name

这样做要特别小心。因为我们无法控制父对象加载子对象的方式。也许,有的人会用一个MovieClip来加载Loader对象,或者,加载对象之后,没有把对象addChild加入到父swf的容器结构中。那么用this.parent.parent获取到的,可能就是null值了。

参考地址:http://zhidao.baidu.com/question/155160578

本文首发:剑锋博客 尊重作者,请保留链接。

分享到: 更多

给我留言(您的留言,是对我最好的鼓励!

公告栏

  • 姓名:林剑锋(不见不散)
  • 来自:中国-广州
  • 简介:潮汕人,出生于广东揭西。醉心于Web开发8年,挑战了一年整体策划和网站运营。目前就职于平成混媒IT部。
  • Email/QQ:admin@ljf.cn

QQ群:设计学院 68075618,网站设计师 9908776

统计

文章:335篇
评论:163条 (2条Spam)
相册:1个 (120张图片)
主题:Nagrand新主题

www.ljf.cn网站PR查询