AS3加载外部swf文件,如何调用原swf里的方法

a.swf里面加载b.swf,如何实现点击b.swf里面的按钮,执行a.swf里面的方法... a.swf里面加载b.swf,如何实现点击b.swf里面的按钮,执行a.swf里面的方法 展开
 我来答
alanbabbage
2013-09-28 · TA获得超过976个赞
知道小有建树答主
回答量:755
采纳率:0%
帮助的人:1139万
展开全部

加载b.swf成功后,将a传到b中去,之后在b中可以使用这个变量来控制a上的东西

 

a.swf加载代码:

var loader:Loader = new Loader();
loader.load(new URLRequest("b.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteFun);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadErrorFun);
function loadCompleteFun(e:Event):void {
 var obj = e.currentTarget.content;
 obj.main = this;//注意,在b.swf中必须有公共变量main才行,否则这里就报错了,可以自定义,只要双方都统一就行
 this.addChild(obj);
}
  
function loadErrorFun(e:IOErrorEvent):void {
 trace("b.swf不存在!");
}

function mainFun():void{

 trace("这个是a中的方法!");

}

在b.swf中要有一个公共变量,让a来设置的

 

b.swf代码:

var main;
btn.addEventListener(MouseEvent.CLICK,clickFun);
function clickFun(e:MouseEvent):void{
 if(main){
  main.mainFun();//调用a中的方法
  //对于a中的所有可访问的方法与变量都可以这样访问使用
 }
}

代码已测试通过。

百度网友98ba30d
推荐于2016-05-18 · TA获得超过1616个赞
知道大有可为答主
回答量:2623
采纳率:50%
帮助的人:2812万
展开全部

a文件是用Loader载入b.swf的吧,可以在b中通过”Object(parent.parent).functionA“这样的形式来调用a中的函数。具体使用几个parent要看b相对于a的层次。

 

给你做了一个as3版本的例子,源文件用flash cs6打开。

 

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-28
展开全部

无语,就没人会使用事件流的方式派发事件通知a吗?

 

 

 

文件版本要求最低flash cs4 打开

使用了as3的事件流特性, 什么功能属于谁的 就由谁去负责,a.swf处理的工作,就不应该由b.swf去逐级访问控制,
b.swf只需要派发一个事件 ,告诉a.swf需要做什么事就可以了,具体事情如何处理,a.swf全权负责完成

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式