下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、多个flash文件的通讯一、as1/2与AS3的SWF文件通讯的方法:1、LocalConnection通讯:AS 3.0 生成的swf和AS 1.0/2.0 生成的swf。他们之间不能直接通讯,只能用唯一一种方法,也就是LocalConnection类实现间接通讯,LocalConnection类使用于所有SWF文件,不论1.0/2.0/3.0都支持。LocalConnection一般用在Flex程序和Flash程序之间的通讯。A、flash端代码Flash.fla中我们在第一侦写入代码:var lc:LocalConnection = new LocalConnection(;/创建一个L
2、ocalConnection对象lc.gotoAndStopME(jindu:Number gotoAndStop(jindu;/注意哦,我现在写的都是AS 2.0代码,2.0没有3.0那么严格/以上这句代码的意思是, gotoAndStopME(jindu:Number. 这一部分是一个function,而这个function是lc对象的一个属性lc.connect("bridge"/这一句意思是,lc对象在swf运行时,时刻监听外部SWF给自己发的信息,lc只监听外部SWF文件里LocalConnection对象发出的信息,这个信息里必须包含"bridge&q
3、uot;,你可以把bridge理解为桥梁。它只是一个字符串,你可以换成任何其他字符。好了,flash端代码写完了。我介绍一下运作过程。问:那句bridge加哪?function外面还是里面?答:以下是flash端完整代码:var lc:LocalConnection = new LocalConnection(;lc.gotoAndStopME(jindu:Number gotoAndStop(jindu;lc.connect("bridge"B、Flex端的代码: 首先,2个SWF要在一个服务器下,如果在2个不同服务器下,还要在被控制的那个SWF里加入,lc.allDom
4、ain("服务器访问地址" Flex端SWF运行时,它的lc发出("bridge","gotoAndStopME",num参数,"bridge"是2个lc之间的桥梁,"gotoAndStopME"是被控制SWF里lc的一个属性(也是一个function,num是gotoAndStopME方法的参数。参数可以不只一个,可以有多个。("bridge","gotoAndStopME",num1,num2,num3.,当然,flash端那边要预定义。问:如果要传递
5、一个数组了?答:如果要传递数组,首先flash端:lc.shuzu(sz:Array.Flex端:var sz:Array = .;lc.send("bridge","shuzu",sz;总结:总之,你传递什么变量都可以,不过2端都要预定义补充:有一点我忘了讲了,flash.swf 和 flex.swf 在一个目录下。flex除了有先我写的那些代码以外,还要做一件事情,用Flex里的SWFLoader把flash.swf的路径定义在SWFLoader的source里,使flex.swf运行时会外部载入flash.swf, 这样,2个swf在运行时,可以互
6、相通讯。重复使用bridge是可以的,也可以使用别的,比如bridge1, bridge2.注意哦,LocalConnection的优势是完全的兼容性,它可以用在所有 AS 1,2,3 SWF之间的通讯。也就是说,2个Flex程序也可以用LocalConnection做通讯。LocalConnection的缺点是显而易见的,2个SWF彼此的方法要预定义,很间接,并不能互相直接访问,而在AS 3.0里,2个SWF之间则可以完全互相访问,这就要用到AS 3里才有的ApplicationDomain类。这个类很抽象。2、AS3 的SWF之间通讯:用AS 3.0生成的SWF,他们直接可以直接通讯,专业
7、名词是"Cross-Scripting".只能在AS3的SWF里的ApplicationDomain的用法:现在有2个flex程序: a.swf 和 b.swf,a.swf 要运行时动态载入 b.swf, 并且直接控制b.swf的变量和方法。首先,b.swf在这里是被控制一方,所以,在b.swf中并不需要额外写代码,只有一个要注意的。b.swf中,永远只有 public 的方法和变量能够被其他swf调用。private的是不可能被调用的。问:那么internal的呢,应该也不能吧?答:这个可以,不过要放到一个目录里b.swf讲完了,没什么特别的,难点主要在a.swf里面,a
8、.swf中,首先我们要使用Flash包里的Loader类。注意,不是mx里的SWFLoader类;核心代码如下:private function init(:void var u:URLRequest = new URLRequest("b.swf" u.method = URLRequestMethod.POST; var LDC:LoaderContext = new LoaderContext(; LDC.applicationDomain = ApplicationDomain.currentDomain; var LD:Loader = new Loader(;
9、LD.contentLoaderInfo.addEventListener(Event.COMPLETE,done; LD.load(u,LDC;u是一个url请求,包含b.swf的路径,u用的是POST方法,传送时不会在地址栏暴露b.swf的地址,LDC是一个LoaderContext对象,它主要用来定义被载入SWF(即b.swf的ApplicationDomain存放位置,这里我把b.swf的ApplicationDomain跟a.swf的ApplicationDomain存放到了一起,共享。LD是Flash包里的一个Loader对象,其实我们需要监视LD多个事件,这里我只写了一个最重要的
10、事件Event.COMPLETE, 也就是在b.swf被载入的时候发出的事件。最后一句LD.load(u,LDC意思是,LD载入u里面的地址,使用LDC来给被载入对象的ApplicationDomain定位。接下来是done这个监视器方法private function done(e:Event:void var BClass:Class = ApplicationDomain.currentDomain.getDefinition("B" as Class; /在当前ApplicationDomain里获得B这个类的原代码,传递给BClass这个对象 /BClass相当于
11、整个B.swf的主类Class B var B:Object = new BClass(; /将BClass实例化,得到B,B就代表B.swf的实例好了,现在你可以直接访问B.swf中所有public变量和方法了假设B.swf里有以下代码:public var num1:Number;public function plus(:void num1 += 96;那么,A.swf中可以这样访问private function done(e:Event:void var BClass:Class = ApplicationDomain.currentDomain.getDefinition("B" as Class; var B:Object = new BClass(; B.plus(; / num1增加了96 B.num1 = 1285; /或者直接修改num1的值注意咯.整个代码里,跟LocalConnection类没有一点关系,我这里讲的全部是ApplicationDomain的用法,它很强大,属于AS 3高级类,它的难点在于使用起来很抽象。Applicatio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年麻醉专业结业考核科内模拟试题附答案
- 慢性偏头痛针灸联合药物疗程标准共识
- PCB工程师职业技能考证试题及详细参考答案
- Oracle OCA 12c 认证考试真题及详细答案解析
- MDS输血依赖远期并发症监测共识
- 2026年低压电气考试试题及答案
- 培训机构学员接送操作规程
- NPET全国中小学英语水平测试模拟试题(含详细答案解析)
- 货物装卸作业安全操作规程
- 湖南省衡阳市一中教育集团2025-2026学年九年级上学期语文期中试卷(含答案)
- 学礼仪懂尊重做文明小学生-小学主题班会课件
- 2025年医院普外科岗招聘笔试题目(附答案)
- 第四单元跨学科实践活动3:水质检测及净水器的制作课件2025-2026学年九年级化学人教版上册
- (广东二模)广东省2026年4月高三高考模拟测试(二)数学试卷(含标准答案及解析)
- 山东省潍坊广文中学2025-2026学年九年级上学期期中考试语文试卷(解析版)
- 2025 AI语音合成市场调研报告
- 光伏设备安全培训课件
- 卷绕机培训课件
- 工程联系单管理办法(含附件)
- 四诊闻诊课件
- 教育管理基础数据元素和代码规范 第3部分:资产
评论
0/150
提交评论