flex与amfphp通信

合集下载

推荐-基于Flex三种通讯方式的Java配置与整合 精品

推荐-基于Flex三种通讯方式的Java配置与整合  精品

基于Flex三种通讯方式的Java配置与整合20XX年8月13日目录一、前言在项目开发过程中,很多时候需要给第三方提供一些接口来处理项目中的一下数据,然而在使用flex的AMF通信方式来配置我们的java web project的时候,我们就无法来处理这样的需求,所以这个时候我们可以合理的引入httpservice通讯方式和webservice通讯方式来弥补java服务端这一缺陷。

下面我们提一下flex三种通讯方式:(#)这里简单说明一下LCDS与blanzeds的区别。

BlazeDS可以看成是LCDS的一个子集,而且是一个开源产品,在一般的项目中完全可以替代LCDS。

(抱歉,adobe官方的图片找不到了,所以找了张有水印的)这份是adobe公司给的对比二、基础信息准备基础准备,在这里我们使用的IDE是myeclipse10.7.1(因为在使用jar包的时候使用的是myeclipse自带包)。

JDK使用的是1.6.0.45基本配置与框架使用web层:1)spring-flex 1.0.3(AMF)2)struts 2.3.15.1(httpservice)3)cxf 2.7.6(webservice)service层:1)spring 3.1 [使用myeclipse自带]DAO层:1)hibernate 3.3 [使用myeclipse自带]下载jar包1.spring-flex 1.0.3(AMF)这里我们使用的是1.0.3这个版本。

2.blazeds(AMF)adobe blazeds-bin-4.0.0.14931.zip登录,下载blazeds,最新版本为4.0.0.14931。

3.backport-util-concurrent 3.1(AMF)这个在下载时请注意版本,这里下载backport-util-concurrent-Java60-3.1.zip,这个为jdk1.6下的jar文件。

学习AMF协议之数据类型

学习AMF协议之数据类型

AMF是Action Message Format协议的简称,AMF协议是Adobe公司自己的协议,主要用于数据交互和远程过程调用,在功能上相当于WebService,但是AMF与WebService中的XML 不同的是AMF是二进制数据,而XML是文本数据,AMF的传输效率比XML高。

AMF使用HTTP 方式传输,目前主要是用于ActionScript中,即实现Flex和Server之间的通信。

我是做.Net开发的,按理说和AMF没有什么关系,主要是最近在耍一款网页游戏:纵横天下,该游戏就是采用Flex做的客户端,为了能够做出该游戏的挂机程序,所以才开始学习研究AMF的。

闲话休说,言归正传,下面继续说AMF协议,在例子中我使用的AMF数据就是从纵横天下中抓取的AMF数据。

AMF目前有两种版本,AMF0和AMF3,他们在数据类型的定义上有细微不同。

关于AMF的官方文档参见这里。

Type Byte code NotesNumber0×00Boolean0×01String0×02Object0×03MovieClip0×04Not available in RemotingNull0×05Undefined0×06Reference0×07MixedArray0×08EndOfObject0×09See ObjectArray0x0aDate0x0bLongString0x0cUnsupported0x0dRecordset0x0e Remoting, server-to-client onlyXML0x0fTypedObject (Class instance)0×10AMF3 data0×11Sent by Flash player 9+对应的枚举就是public enum DataType{Number = 0,Boolean = 1, String = 2, UntypedObject =MovieClip = 4,Null = 5,Undefined = 6,ReferencedObject = 7,MixedArray = 8,End = 9,Array = 10,//0x0ADate = 11,//0x0BLongString = 12,//0x0CTypeAsObject = 13,//0x0DRecordset = 14,//0x0EXml = 15,//0x0FTypedObject = 16,//0x10AMF3data=17//0x11}以上表列出了每种数据类型的表示方法,这样看并不容易理解,下面我就主要讲解一下常用的一些格式:0.Number这里指的是double类型,数据用8字节表示,比如十六进制0040 10 00 00 00 00 00 00就表示的是一个double数4.0,在C#中可以使用如下代码读取该数据:byte[] d=new byte[]{0,0,0,0,0,0,0x10,0x40};//这里的顺序是和amf文件中的顺序正好相反,不要忘记了double num=BitConverter.ToDouble(d,0);1.Boolean对应的是.net中的bool类型,数据使用1字节表示,和C语言差不多,使用00表示false,使用01表示true。

基于Flex三种通讯方式的Java配置与整合

基于Flex三种通讯方式的Java配置与整合

基于Flex三种通讯方式的Java配置与整合2013年8月13日目录一、前言 (3)二、基础信息准备 (6)1.spring-flex 1.0.3(AMF) (7)2.blazeds(AMF) (8)3.backport-util-concurrent 3.1(AMF) (8)4.struts-2.3.15.1(httpservice) (9)5.cxf 2.7.6(webservice) (10)三、具体配置方案与测试 (10)1.第一步我们先来配置SH(spring + hibernate) (10)2.增flex-spring服务支持,是项目支持AMF通讯协议(FSH) (27)3.增struts服务支持,是项目支持http通讯协议(httpservice) (30)4.增cxf服务支持,是项目支持sopa通讯协议(webservice) (35)四、总结 (38)一、前言在项目开发过程中,很多时候需要给第三方提供一些接口来处理项目中的一下数据,然而在使用flex的AMF通信方式来配置我们的java web project的时候,我们就无法来处理这样的需求,所以这个时候我们可以合理的引入httpservice通讯方式和webservice通讯方式来弥补java服务端这一缺陷。

下面我们提一下flex三种通讯方式:(#)这里简单说明一下LCDS与blanzeds的区别。

BlazeDS可以看成是LCDS的一个子集,而且是一个开源产品,在一般的项目中完全可以替代LCDS。

(抱歉,adobe官方的图片找不到了,所以找了有水印的)这份是adobe公司给的对比二、基础信息准备基础准备,在这里我们使用的IDE是myeclipse10.7.1(因为在使用jar包的时候使用的是myeclipse自带包)。

JDK使用的是1.6.0.45基本配置与框架使用web层:1)spring-flex 1.0.3(AMF)2)struts 2.3.15.1(httpservice)3)cxf 2.7.6(webservice)service层:1)spring 3.1 [使用myeclipse自带]DAO层:1)hibernate 3.3 [使用myeclipse自带]下载jar包1.spring-flex 1.0.3(AMF)/download/community这里我们使用的是1.0.3这个版本。

html中flex的用法

html中flex的用法

html中flex的用法一、Flex布局简介HTML中的Flex布局是一种CSS弹性布局,它允许开发者更轻松地创建响应式布局,使得网页元素能够更加灵活地适应不同的屏幕尺寸和设备类型。

Flex布局提供了更直观的布局方式,能够轻松实现元素的水平和垂直对齐,以及灵活的弹性伸缩。

二、Flex布局的基本概念在HTML中使用Flex布局,需要使用`display`属性将元素设置为`flex`。

这样,元素及其子元素就会按照Flex布局进行排列。

在Flex 布局中,主要涉及以下几个属性:1.`flex-direction`:用于控制主轴的方向,用于指定行或列的方向。

2.`flex-wrap`:用于控制是否允许Flex容器换行。

3.`justify-content`:用于控制主轴上的对齐方式。

4.`align-items`:用于控制垂直对齐方式。

5.`align-content`:用于实现行与行之间的对齐方式,当Flex 布局需要换行时,该属性就变得非常重要。

三、Flex布局的用法示例下面是一个简单的HTML示例,展示了如何使用Flex布局:```html<!DOCTYPEhtml><html><head><style>.container{display:flex;flex-direction:column;align-items:center;height:100vh;}.child{width:50%;margin:10px;}</style></head><body><divclass="container"><divclass="child">Child1</div><divclass="child">Child2</div><divclass="child">Child3</div></div></body></html>```在上面的示例中,我们创建了一个名为`.container`的Flex容器,它包含三个子元素(`.child`)。

Flex企业级Web应用系统设计与实现

Flex企业级Web应用系统设计与实现
模块化 事件机制 界面切换(事件触发) 利用事件传递数据 编写 Flex 界面组件 自定义界面组件 自定义数据校验组件 接口机制 数据绑定机制 读取属性文件 Flex 程序乱码 Flex 国际化
第 4 章. Flex 客户端技术实现
5 .10
1 .2 .13 1 .2 .14 5 .11 5 .12 5 .13 5 .14 5 .15 5 .16
第 2 篇 “Fle x 客户端的设计与实现” 第 3 章.客户端开发 规则
3.1 3.2 3.3
5 .1 5 .2 5 .3 5 .4 5 .5 5 .6 5 .7 5 .8 5 .9
命名规则............................................................................................................................. 2 编码规范............................................................................................................................. 2 异常处理规范..................................................................................................................... 5
凡购本书,如有倒页、脱页、缺页,由本社发行部调换 本社购书热线(010 )68326294
纲 要
企业级 Web 应用系统需要多人团队并行开发,如何能够适应这种开发模式是设计系统 架构的重点。 设计良好的系统架构应该像拆积木那样能够拆分成为不同的部分, 这些部分功能上相对 独立,便于多人开发而不会相互影响。同时,又能够像搭积木那样方便地组合,完成复杂的 功能。 本书从企业级 Web 应用系统设计中实际需要解决的独立技术问题出发,提出问题,分 析问题,解决问题。然后又将独立的技术要点结合起来,搭建企业级 Web 应用系统的开发 框架雏形。 本书的实例采用 Flex2,AmfPHP ,PHP,MySQL 技术。 本书适合有 Web 应用系统开发经验的系统设计人员和软件工程师参考。

flex 兼容写法

flex 兼容写法

flex 兼容写法一、flex 布局简介flex 布局是一种现代的 CSS 布局模型,它提供了更加灵活、便捷的布局方式。

flex 布局能够轻松地实现各种复杂的排版和设计需求,因此在现代网页设计中得到了广泛的应用。

然而,由于一些老版本的浏览器可能不支持 flex 布局,因此需要采用一些兼容写法来确保在不同浏览器中的兼容性。

1. 使用浏览器前缀浏览器厂商前缀是指为 CSS 属性添加浏览器特定的版本号,以兼容不同浏览器的兼容性问题。

在使用 flex 布局时,可以使用浏览器前缀来确保在不同浏览器中的兼容性。

例如,可以使用 -webkit- 来兼容 Safari 和 Chrome,-moz- 来兼容 Firefox,-ms- 来兼容 IE 等。

示例代码:* flex-direction: -webkit-flex-direction: row;* flex-wrap: -webkit-flex-wrap: wrap;* justify-content: -webkit-justify-content: flex-start;2. 使用 polyfillspolyfills 是一种为老版本浏览器提供新特性的 JavaScript 库,它们可以在老版本浏览器中实现新特性,从而确保在不同浏览器中的兼容性。

在使用 flex 布局时,可以使用 polyfills 来实现兼容性。

例如,可以使用 MDC Web 等 polyfill 库来实现 flex 布局的兼容性。

示例代码:*window.getComputedStyle(element).getPropertyValue('display');* if (window.CSS && 'flex' in window.CSS) {// 使用 flex 属性进行设置} else {// 使用 polyfill 进行兼容性处理}3. 使用 fallback 方案fallback 方案是指在老版本浏览器中提供备选方案,以实现相同的效果。

iframe通信方法

iframe通信方法

iframe通信方法
在HTML中,iframe元素可以用于嵌入另一个网页到当前页面中。

如果你想要实现iframe之间的通信,可以使用以下几种方法:
1. 使用JavaScript的postMessage方法:父页面可以通过postMessage 方法向iframe发送消息,iframe也可以通过postMessage方法向父页面发送消息。

这种方法可以实现跨域通信,即父页面和iframe可以来自不同的域名。

2. 使用属性:iframe可以通过设置属性来共享其名称,然后父页面和iframe可以通过监听和设置这个属性来实现通信。

3. 使用hidden的iframe:如果你要发送跨域的请求,可以使用一个隐藏的iframe来发送请求,然后在父页面中监听这个请求。

4. 使用事件:当iframe加载完成时,会触发事件。

你可以在父页面中使用这个事件来检测iframe是否加载完成,然后进行相应的操作。

以上是几种常用的iframe通信方法,你可以根据具体的需求选择适合的方法来实现通信。

iframe传递方法

iframe传递方法

iframe传递方法
iframe传递方法主要有以下几种:
1.postMessage:父页面可以向iframe页面发送消息,iframe页面也可以向父
页面发送消息。

使用postMessage方法可以修改iframe的内部数据,实现跨域通信。

2.window.open:通过window.open方法打开一个新的窗口,父页面与新窗
口之间的通信也是跨域的。

可以通过设置window.opener对象,让新窗口与父页面之间相互引用。

3.WebSocket:WebSocket是一种双向通信协议,可以实现浏览器与服务器之
间的实时通信。

通过WebSocket,父页面可以向iframe页面发送消息,iframe页面也可以向父页面发送消息。

4.MessageChannel:MessageChannel是WebAssembly中提供的一种跨域通
信方式,可以在不同的域之间传递消息。

使用MessageChannel可以方便地在父页面与iframe页面之间传递数据。

这些方法中,postMessage是实现跨域通信的主要方式,window.open、WebSocket和MessageChannel等其他方式可以作为补充,根据实际需求选择适合的方式。

vue与iframe之间的信息交互的实现

vue与iframe之间的信息交互的实现

vue与iframe之间的信息交互的实现vue与iframe之间的信息交互是一种常见的需求,通常用于将一个独立的网页嵌入到另一个网页中,并实现两者之间的数据传递和相互调用。

在本文中,我们将探讨几种常见的实现方式,包括使用postMessage、window.parent、vuex以及自定义事件等。

1. 使用postMessage进行信息交互postMessage是HTML5中提供的一种跨文档通信的方法,可以实现在不同的窗口、窗体或iframe之间传递数据。

在vue与iframe之间进行信息交互时,我们可以使用postMessage方法发送消息,并在对方窗口中通过监听message事件接收消息。

下面是一个简单的示例:// 在vue中发送消息// 在iframe中监听消息window.addEventListener('message', (event) =>if (event.data.type === 'message')console.log(event.data.data); // 输出Hello from vue}})2. 使用window.parent进行信息交互在vue的iframe中,我们可以通过window.parent来访问父窗口中的方法和属性。

通过这种方式,我们可以直接调用父窗口中的方法,从而实现信息的交互。

下面是一个示例:// 在vue的iframe中调用父窗口中的方法window.parent.foo(; // 调用父窗口中的foo方法// 在父窗口中定义foo方法function foconsole.log('Hello from iframe');3. 使用vuex进行信息交互如果你正在使用vuex来管理vue应用程序的状态,那么你可以通过在vuex的store中定义一个专门用于与iframe交互的模块,来实现信息的传递和调用。

AMFPHP配置详细教程

AMFPHP配置详细教程

AMFPHP配置详细教程不想传递拆分字符串,解析串行XML了吧?厌烦JSON了?试试AMF吧,传送多种数据格式。

首先下载AMFPHP(本教程使用1.9BETA2)你可以选择其他版本在这里选择下载下载后,解压缩,把文件夹中的amfphp文件夹拷贝到 APACHE服务器的网站根目录。

然后打开浏览器,输入http://localhost/amfphp/gateway.php确定如果提示:amfphp and this gateway are installed correctly. You may now connect to this gateway from Flash.Note: If you're reading an old tutorial, it will tell you that you should see a download window instead of this message. This confused people so this is the new behaviour starting from amfphp 1.2.View the amfphp documentationLoad the service browser说明安装成功。

打开网站根目录的AMFPHP文件夹,进入SERVICES文件夹,新建一个PHP 文件命名为HELLOWORLD.php拷贝以下代码:<?phpclass HelloWorld{function HelloWorld(){$this->methodTable = array("say" => array("access" => "remote","description" => "Pings back a message"));}function say($sMessage){return 'You said: ' . $sMessage;}}?>保存!在浏览器地址栏输入http://localhost/amfphp/browser/回车AMFPHP的项目管理器:单击HelloWorld看到一下内容,就是HELLOWORLD项目具体内容:在sMessage输入内容(比如"xiaoxiaocainiao"),单击call按钮:看到页面下方的提示结果:好了,你已经初步学会安装AMFPHP并使用了,具体的语法,函数,还需要查看一下官方的文档啦。

第18讲:Flex与网页之间的通信

第18讲:Flex与网页之间的通信

Flex与网页之间的通信,指的是Flex应用程序与包 裹其的HTML网页之间的通信,即数据交换. 1、Flex中获取环境信息 示例1(Demo1): 在Flex中获取当前HTML网页url相关信息.

mx.core.Application.application.url
2、传递数据到Flex应用程序
北风网项目培训
应用Flex+技术构建大型网上书店电子商务交易平台 全程实录 第18讲:Flex与网页之间的通信
讲师:风舞烟
1、Flex中获取环境信息 2、传递数据到Flex应用程序 3、Flex中调用外部javascript函数 4、从JavaScript应用程序获得Flex 5、综合示例
示例:SimplestNavigateToURL.mxml
4、从JavaScript应用程序获得Flex
示例:AddCallbackExample.mxml/AddCallbackExample2.mxml/ExtDemoApp2.html
欢迎访问我们的官方网站
示例2(Demo2.mxml/FlashVarTest.html)
3、Flex中调用外部javascript函数 3.1、使用Externallnterface API 获得Javascript
示例3(Demo3.mxml/WrapperCaller.html)
3.2、Flex中使用NavigateToURL()方法调用网页

ThinkPHP、ZendAMF、Flex框架整合应用开发

ThinkPHP、ZendAMF、Flex框架整合应用开发
e ML不 同在于 A MF是 二 进 制数
从 MV C的角度 看 .l Fe x只是 一个 客户 端表 现 据 . X 而 ML是文 本数 据 , MF的传输 效 率 比 X L A M 层 ( V e ) 要 真 正 的实 现 数 据 处 理 , 即 iw , 就必 须 与 高圈 。 服务 端程 序进 行 交互 【 Fe 1 l 】 x实 现 R C的方 式 有 . P 支 持 P P语 言 的 A F开 发 框 架 有 : MF H M A .
型 、 目编译 、 存 机 制 、 E 项 缓 S O支 持 、 布 式 数 据 分
鉴 于 如 上 所 述 的 。h k H 、 e d MF Fe T i P P Z n A 、l n x 库、 多数据 库支持 、 证机 制 和扩 展性 方 面均有独 三 者之 间具有 各 自的优 势 .那 么 下 面 阐述如 何 整 认 特 的表 现【 3 ] 合 三个 框架 .为企 业级应 用 提供 一种 敏 捷 的开 发
方法。 如 图 1 示 . 合 后 的 框 架 , 用 Fe 所 整 使 lx来 代 A MF协 议 是 A oe公 司 的 A t n M sae db c o esg i hn P P的视 图 ( i ) V e 部分 。l w Fe x负责前 端 的 F r a 协议 的简称[ 主要 用 于数 据 交互 和远程 过 替 T ik H om t 4 1 . T ik H 程 调 用 . 功能 上 与 We S ri 相 当 , A 在 be c ve 但 MF与 用 户 交 互 .hn P P负 责 服 务 端 的 业 务 逻 辑
三 种 : rr evc 、 b S rie 和 R moe O . P P Z n A 、 b R 等 。其 中 Z n A Hr P S rie We evc e t b H 、 e d MF We O B e d MF是

amfe-flexible用法

amfe-flexible用法

amfe-flexible 是一个用于移动端布局适配的解决方案,它可以帮助开发者快速实现移动设备的屏幕适配,在不同屏幕尺寸上展现统一的布局效果。

在本文中,我将深入探讨 amfe-flexible 的用法,并共享我的个人观点和理解。

一、amfe-flexible 是什么?amfe-flexible 是一个灵活的移动端适配方案,它可以根据设备的屏幕尺寸和像素密度进行动态的缩放,以适应不同的屏幕大小。

通过使用amfe-flexible,开发者可以不再需要手动编写大量的适配代码,而是通过简单的配置和引入该库,即可轻松实现移动端布局的适配。

二、amfe-flexible 的使用方法1. 配置要使用 amfe-flexible,首先需要在项目的入口文件中引入该库,并进行相应的配置。

在引入 amfe-flexible 后,开发者可以通过设置基准像素值和屏幕最大宽度等参数来灵活调整布局适配的效果。

2. rem 单位在使用 amfe-flexible 后,开发者可以直接使用 rem 单位来进行布局设计。

amfe-flexible 会根据设备的屏幕尺寸和像素密度动态计算 rem 的值,从而实现不同屏幕下的统一布局效果。

3. 弹性布局借助 amfe-flexible,开发者可以实现弹性布局,使布局元素能够根据屏幕的大小和密度动态调整,从而呈现出更加美观和合理的布局效果。

三、个人观点和理解对于移动端布局适配来说,amfe-flexible 确实是一个非常方便和强大的工具。

它可以大大简化开发者的工作,并且能够在不同的移动设备上呈现出统一的布局效果,给用户带来更加愉悦的体验。

然而,在使用 amfe-flexible 的过程中,开发者也需要注意合理设置 rem 的基准值和屏幕最大宽度,以及合理处理一些特殊情况下的布局适配。

总结在本文中,我深入探讨了 amfe-flexible 的用法,并共享了自己的观点和理解。

通过合理配置和使用 amfe-flexible,开发者可以轻松实现移动端布局的适配,为用户提供更加优质的移动端体验。

FLEX3通信方式简介

FLEX3通信方式简介

Flex与服务器端的通信方式Flex开发中最重要的内容之一,就是与服务器和数据库的通信。

而这样的通信方式我所知道的大概有七种,其中Blazeds与LCDS可以归结成一种。

如果要实现Flex与客户端应用程序之间的通信,我想主要用到的方法为:Socket通信。

而在Web方面,Flex提供了3个类实现与服务器端的通信:HTTPService,ReObject和WebService。

另外,我们还可以根据外部中间插件来让Flex与服务器端进行通信,我所了解的有Blazeds(Lcds),Red5(FMS)流媒体服务器,PHPRPC。

◆HTTPService类用于超文本传输协议(HTTP)实现与服务器的通信。

Flex应用程序用GET 或POST请求将数据发送到服务端,并处理该请求所返回的XML或字符串。

使用这个HTTPService类,可以与PHP页,ColdFusion页,JSP页,Javaservlet,RubyonRails,以及MicrosoftASP页进行通信。

◆RemoteObject类可以与服务器之间通过ActionScriptMessageFormat(AMF)对象进行通信。

通常来说,我们也可以把Blazeds与Lcds归于这一类。

RemoteObject也可以与java或coldFusion远程网关进行通信,或者通过开源项目(例如AMFPHP.SabreAMF或WebORB)与.NET 和PHP进行通信。

◆WebService类与web服务进行通信,使用基于SOAP的XML或XML,web服务通过web 服务描述语言(WSDL)定义其接口。

◆Socket类可以实现直接与应用程序进行通信,而不必在Web的基础上,通信的方法与JAVA 或.NET之间进行Socket的方法大致上是一样的,具体的,将在下面的章节中介绍。

关于Red5与FMS这两个流媒体服务器,应该说它们本身的优势在于多多媒体上,而实现Flex 与服务器端相连,也是它们最基本的功能之一。

flex语言

flex语言

1.了解Flex在如今这个以用户为中心的时代,用户体验越来越重要,用户不仅要求应用要像C/S模式的应用那样具有良好的交互性,而且要求应用要像B/S模式的应用那样具有部署灵活和跨平台的优势。

RIA技术便是在这种需求下应运而生的,它同时具备B/S模式和C/S模式应用的双重优势,很好地满足了现代用户的需求Flex, Silverlight, JavaFx ,Html5四种语言:1. 必须支持Java作为后台语言,且能够与JSF/JSP开发的系统集成。

2. 必须有成功案例可以借鉴,成功案例多则优先考虑。

3. 有成熟的IDE,支持拖拽编程和跟踪调试。

如果能基于我们所熟悉的Eclipse集成开发环境,则会优先考虑。

能够满足这些要求的就只有FlexFlex是排版打印软件和图形渲染软件巨头Adobe公司在其著名的Flash平台(Flash Player)上,用ActionScript语言开发的一套RIA软件开发套件(SDK)及其集成开发环境。

开发人员可以将RIA程序编译成为Flash文件,为Flash Player所接受,也就是说,Flex技术所开发出来的程序对于大部分浏览者而言并不需要安装额外的客户端支持,这是一个得天独厚的优势。

2.语言及数据Flex程序以下三个文件组成:以css为后缀的样式表文件以mxml为后缀的程序文件以as为后缀的ActionScript文件2.1MxmlMXML语言是专门用于Flex程序中,描述界面表现的一种XML标记语言。

我们可以用它来管理程序的整体布局,控制组件的样式和外观,也可以构建非可视化的对象,比如XML数据,组件的数据源等。

MXML标签与ActionScript类或者类中的属性是相对应的。

当你编译你的Flex应用程序的时候,Flex解析你的MXML标签并且生成相应的ActionScript类。

然后这些ActionScript类会被编译成SWF字节码存储到一个SWF文件中。

myflex

myflex

FLEX与C#、PHP、JAVA语言通信全面解析以下介绍几种最为常见和实用的FLEX与现有开发语言通信的方法:1.C#2.PHP3.JAVA1.Flex与C#通信(.net开发中常用)Flex端代码:public static function SendMessage(objXML:XML,objResultHandle:Function):void {var objHttpService:HTTPService = new HTTPService();objHttpService.url = "http://localhost:8085/upfiledata.aspx"; //发送到的C#页面objHttpService.resultFormat = "e4x";objHttpService.addEventListener(ResultEvent.RESULT,objResultHandle);objHttpService.method = "POST";objHttpService.contentType = "application/xml";objHttpService.send(objXML); //objXML 要发送的数据}public function objResultHandle(evt:ResultEvent):void{evt //接收到的数据}C#端:protected void Page_Load(object sender, EventArgs e){XmlDocument objProtocolDom = new XmlDocument();objProtocolDom.Load(Request.InputStream); //objProtocolDom接收来自Flex端所发送的数据流Response.ContentType = "text/xml";Response.Write(objResultDom.OuterXml); //向Flex端下发数据流}2.Flex与php通信Flex代码:<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="/2006/mxml"creationComplete="onInit()" xmlns="*" layout="absolute"backgroundGradientColors="[#ffffff, #c0c0c0]"><mx:Script><![CDATA[public function onInit():void{userRequest.send();}]]></mx:Script><mx:HTTPService id="userRequest" url="request.php" useProxy="false"method="POST"><mx:request xmlns=""><username>{username.text}</username><emailaddress>{emailaddress.text}</emailaddr ess></mx:request></mx:HTTPService><mx:Form x="22" y="10" width="356"><mx:HBox><mx:Label text="Username"/><mx:T extInput id="username"/></mx:HBox><mx:HBox><mx:Label text="Email Address"/><mx:T extInput id="emailaddress"/></mx:HBox><mx:Button label="Submit" click="userRequest.send()"/></mx:Form><mx:DataGrid id="dgUserRequest" x="22" y="128"dataProvider="{er}"><mx:columns><mx:DataGridColumn headerText="User ID" dataField="userid"/><mx:DataGridColumn headerText="User Name" dataField="username"/> </mx:columns></mx:DataGrid><mx:T extInput x="22" y="292" id="selectedemailaddress"text="{dgUserRequest.selectedItem.emailaddress}"/></mx:Application>php代码:<?php/* Thanks to Pete Mackie for the code below */Define(’DATABASE_SERVER’, ’localhost’);Define(’DATABASE_USERNAME’, ’root’);Define(’DATABASE_PASSWORD’, ’root’);Define(’DATABASE_NAME’, ’flextest’);# Connect to the database$mysqli = new mysqli(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME);# Check connectionif (mysqli_connect_errno()) {printf("MySQL connect failed: %s\n", mysqli_connect_error());exit();}# Quote variable to make safefunction quote_smart($value) {global $mysqli;# Stripslashesif (get_magic_quotes_gpc())$value = stripslashes($value);# Quote if not integerif (!is_numeric($value))$value = $mysqli->real_escape_string($value);return $value;}if (!empty($_POST) && $_SERVER[’REQUEST_METHOD’] == ’POST’) { if ($_POST[’emailaddress’] && $_POST[’username’]) {# Add the user$query = sprintf("Insert INTO users VALUES (’’, ’%s’, ’%s’)",quote_smart($_POST[’username’]), quote_smart($_POST[’emailaddress’]));if (!@$mysqli->query($query)) {printf("’flextest’ user database query insert error: %s\n", $mysqli->error);$mysqli->close();exit();}}}# Return a list of all the usersif (!$result=@$mysqli->query("Select * from users")) {printf("’flextest’ user database query select error: %s\n", $mysqli->error);$mysqli->close();exit();}$xml_return = "<users>";while ($user = mysqli_fetch_array($result, MYSQLI_ASSOC)) {$xml_return .="<user><userid>".$user[’userid’]."</userid><username>".$user[’username’]."</usernam e><emailaddress>".$user[’emailaddress’]."</emailaddress></user>\n";}$xml_return.= "</users>";$mysqli->close();echo $xml_return;?>3.FLEX与JAVA之间的通信这里介绍一种方法:使用BlazeDS实现Java和Flex通信BlazeDS 是一个基于服务器的Java 远程控制(remoting) 和Web 消息传递(messaging) 技术,它能够使得后端的Java 应用程序和运行在浏览器上的Adobe Flex 应用程序相互通信。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

package lalo
{
import Connection;
import .ObjectEncoding;
public class RemotingConnection extends NetConnection
{
//构造函数
public function RemotingConnection(sURL:String)
{
objectEncoding=ObjectEncoding.AMF3;
if(sURL)
{
connect(sURL);//link to the server
}
}
public function AppendToGatewayUrl(s:String):void
{
//追加网关参数
}
}
}
以上是一个类,以下是主程序:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="/2006/mxml"
layout="absolute" creationComplete="initApp()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import lalo.RemotingConnection;
import .Responder;
//声明一个RemotingConnection远程连接对象
public var gateway:RemotingConnection;
//初始化
public function initApp():void
{
gateway=new
RemotingConnection("http://localhost/amfphp/gateway.php");
//这里使用localhost,访问时也应该是http://localhost/;如果使用127.0.0.1,访问就使用http://127.0.0.1
gateway.call("municationTest",new
Responder(onResult,onFault));
}
//返回结果
public function onResult(result:Object):void
{
Alert.show(result.toString());
//Alert.show("ok");
}
//捕获异常
public function onFault(fault:Object):void
{
Alert.show("dd");
//trace(fault);
//Alert.show("no");
//trace(fault);
}
]]>
</mx:Script>
</mx:Application>
municationTest:sample为afmphp->services里的文件名;qq为类名
<?php
class qq
{
function communicationTest()
{
return 1;
}
}
?>
以下程序直接在主程序里连接amfphp:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="/2006/mxml"> <mx:TextArea id="amfphptest" width="200"/>
<mx:Button label="call amfphp" click="callAmfPHP(amfphptest.text)" />
<mx:Script>
<![CDATA[
import .Responder;
import Connection;
import mx.controls.Alert;
private var gateway_url:String =http://localhost/amfphp/gateway.php"; //网关地址
private var geteway_conn:NetConnection = new NetConnection();
//网络链接对象,有点像数据库里的连接对象
//处理结果响应的,Responder,2个参数回调(callback)函数,第一个正确结果响应,后面第2个参数可选,响应错误状态,str是要传的参数,多个参数可以继续加,以逗号隔开public function callAmfPHP(str:String):void
{
geteway_conn.connect(gateway_url);
geteway_conn.call("HelloWorld.say", new Responder(onResult,
onFault), str);
//调用amp服务器端的HelloWorld类的eb163say方法
}
private function onResult(result:Object):void//获得反馈结果成功时 {
amfphptest.text = result.toString();
}
private function onFault(fault:String):void//获得反馈结果失败时
{
amfphptest.text = fault;
}
]]>
</mx:Script>
</mx:Application>
HelloWorld.say:类,存放在services下面
<?php
class HelloWorld
{
public function say($sMessage)
{
return ' say: welcome,' . $sMessage;
}
}
?>。

相关文档
最新文档