千家信息网

Flex与Flex swf如何实现通讯

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,Flex与Flex swf如何实现通讯,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Flex通讯系列---Flex与Fl
千家信息网最后更新 2026年11月03日Flex与Flex swf如何实现通讯

Flex与Flex swf如何实现通讯,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Flex通讯系列---Flex与Flex swf

这里讲述的是在FlexApplication中嵌套一个Flex swf,然后实现Flex与Flex swf相互间的通讯。我们需要引入SystemManager接口实现。

下面我们来看一下《Flex3参考手册》对SystemManager的描述,你大约就知道怎么回事,使用里面现成的属性和方法就可以实现Flex与Flex swf的通讯啦。

每个应用程序都包含一个SystemManager。如果应用程序窗口的大小发生更改(您无法在应用程序中更改其大小,只能通过与操作系统窗口或浏览器交互来进行更改),则SystemManager会发送一个事件。它是应用程序中所有可显示项目(例如mx.core.Application主实例以及所有弹出窗口、工具提示、光标等)的父项。任何以SystemManager作为父项的对象都将被视为"***"窗口,就连工具提示和光标也是如此。

是的,要实现Flex调用嵌套Flex swf,主要我们在Flex swf中为Flex打开方便之门就可以了,也就是设计一个publicfunction,难道这还不够简易?下面说一下简单的实现:

1、在FlexApplication(如命名为Main.mxml)中通过Flex swfLoader标签加载Flex swf文件:

viewplaincopytoclipboardprint?   

2、在Game01.mxml中设计一个publicfunction。如:

viewplaincopytoclipboardprint?  publicfunctioninvokeByOutsideFlex():void{  trace("Success...");  }  publicfunctioninvokeByOutsideFlex():void{  trace("Success...");  }

3、在Main.mxml中调用:

viewplaincopytoclipboardprint?
Object(Object(Flex swfLoader.content).application).invokeByOutsideFlex();
//其实第二个Object具体是SystemManager对象,所以也可以写作
Object(SystemManager(Flex swfLoader.content).application).invokeByOutsideFlex();
Object(Object(Flex swfLoader.content).application).invokeByOutsideFlex();
//其实第二个Object具体是SystemManager对象,所以也可以写作
Object(SystemManager(Flex swfLoader.content).application).invokeByOutsideFlex();
我们先来了解两个内容,一个事Flex swfLoader的content属性,另一个是Application.application。

◆Flex swfLoader-content

content属性

content:DisplayObject[]
此属性包含表示在Flex swfLoader控件中加载的内容的对象。

Application-application

很明显,通过这样简单的两句话就可以获取到FlexApplication层次下的public方法。

好了,至此已经可以实现了Flex向Flex swf通讯了。那么Flex swf怎么可以反过来跟FLEX说话呢?原理是一样的,Flex开放一些function,然后Flex swf就可以直接调用那些function了。

4、如在Main.mxml中加入:

viewplaincopytoclipboardprint?  publicfunctioninvokeByInsideFlex swf():void{  trace("Igetit...");  }  publicfunctioninvokeByInsideFlex swf():void{  trace("Igetit...");  }

5、回去Game01.mxml可以直接通过如下代码调用:

viewplaincopytoclipboardprint?  Object(SystemManager(this.parent.parent.root).application).invokeByInsideFlex swf();  //SystemManager可以改成Object,多态特性  Object(SystemManager(this.parent.parent.root).application).invokeByInsideFlex swf();  //SystemManager可以改成Object,多态特性

接下来我们需要看一下两个属性:

◆UIComponent:

这个层次我是通过Debug对象层层查找出来的,层次不同当然需要改一下了,甚至可以直接跳到几层,直接到最外层,这个自己再去查查,呵呵。

源代码下载:准备上传

parent属性

parent:DisplayObjectContainer[]
此组件的父容器或组件。只有UIComponent对象应该具有父属性。非UIComponent对象应该使用其它属性引用其所属对象。一般而言,非UIComponent对象使用owner属性引用其所属对象。

◆DisplayObject:

root属性

root:DisplayObject[]
对于加载的Flex swf文件中的显示对象,root属性是此Flex swf文件所表示的显示列表树结构部分中的***显示对象。对于代表已加载图像文件的位图对象,root属性就是位图对象本身。对于***个加载的Flex swf文件的主类的实例,root属性就是显示对象本身。Stage对象的root属性是Stage对象本身。对于任何未添加到显示列表的显示对象,root属性设置为null,除非它已添加到符合以下条件的显示对象容器:不在显示列表中,但属于已加载Flex swf文件中***显示对象的子级。

application属性

application:Object[]
应用程序的引用。
通常,Application对象可能存在层次结构,因为Application可以使用Flex swfLoader控件动态加载其它Application。可通过UIComponent的parentApplication属性访问UIComponent所在的子Application,并可以在层次结构中向上浏览到Application。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

对象 属性 文件 通讯 层次 应用程序 程序 应用 内容 结构 多态 两个 位图 光标 大小 实例 容器 就是 工具 所属 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 朗新科技与工业互联网 科技类互联网 万易互联网科技 国外互联网科技网站 佩信高科技互联网 重庆威客帮互联网科技 千方科技属于互联网企业吗 开一家科技互联网公司需要多少钱 银川新华互联网科技学校联系电话 互联网科技资金流入 领航科技大厦互联网公司 35岁以上互联网科技行业 九思连强互联网电子科技有限公司 信承诺互联网科技有限公司 吉林省码上互联网科技电话 科技信息时代互联网发展 亚光科技低轨卫星互联网 平安好医生打造互联网科技医疗 中国主要互联网科技公司 株洲百竞科技的互联网营销顾问 新华互联网科技学校 广州互联网科技公司 无线互联网科技 成都仁贤领冠互联网科技有限公司 互联网科技寓意 深圳市优智互联网科技有限公司 工业互联网等科技实现智能化赋能 厦门江牛科技互联网 青岛易易互联网科技 宁波允成互联网科技有限公司
0