AS3加载外部swf文件,如何调用原swf里的方法
3个回答
展开全部
加载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中的所有可访问的方法与变量都可以这样访问使用
}
}
代码已测试通过。
展开全部
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全权负责完成
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |