-
Flex<-->PHP by AMFphp - [笔记]
2009-11-06
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://tangtun.blogbus.com/logs/50442825.html
因为要参加创新实践的骗学分项目,所以开始研究Flex开发。
昨天一下午都在研究如何与PHP后台通信,其实并不难,只是自己走了些弯路。
当然,方法有很多,今天要介绍的是使用AMFPHP Remoting进行整合的方法。
从零开始,先来看看我们需要准备些什么吧。Wamp Server 下载 
Windows系统
Apache服务器
PHP后台脚本
MySQL数据库
傻瓜安装 无需配置
一步到位 简单环保Adobe FlexBuilder 3 下载 
Flex集成开发环境(IDE)
他使用MXML进行布局描述
Actionscript进行逻辑编程
很像HTML和javascript的关系PHP Designer 下载 
一款PHP的集成开发环境(IDE)
简单轻巧 易于上手AMFphp Remoting 下载 
本篇的重点
针对PHP的AMF RemotingStep1:安装Wamp Server
Step2:安装AMFphp
把下载好的AMFPHP解压到wamp\www下。
在浏览器里输入http://localhost/amfphp/browserStep3:写一个简单的php
这里可以用刚才所说的phpDesigner进行编写。
或者也可以直接拿记事本写完改后缀。
写完以后保存为helloworld.php放在AMFphp的service文件夹下面让它来用。
代码如下:1 2 3 4 5 6 7
<php class HelloWorld{ function sayhello(){ return '后台php向发来贺电!'; } } ?>
搞定之后我们回到http://localhost/amfphp/browser来看看他能不能正常运行。
这个时候悲剧发生了,我们的中文输出变成乱码了。
网上搜了一下原来是gateway.php配置的问题,用记事本打开它。
找到 $gateway->setCharsetHandler( "utf-8_decode", "ISO-8859-1", "ISO-8859-1" );
改成 $gateway->setCharsetHandler( "iconv", "gb2312", "gb2312" );
就可以了。这里的三个参数中,第一个代表用来转换编码的php函数,后面两个表示目标编码。
ISO-8859-1是拉丁字符的标准字符集,gb2312是简体中文国家标准字符集。就是这样啦。Step4:设定Flex项目的Remoting连接
我们在FlexBuilder里新建一个项目。
File->New->Flex Project就是。
Application server type当然是选PHP咯。
设定好之后我们开始设定services-config.xml
这个文件我们可以在amfphp\browser文件夹下找到一个。
把他拷到Flex项目的文件夹下。并把其中endpoint标签下的uri属性改为http://localhost/amfphp/gateway.php。保存。
接下来更改一下编译设定,使刚才这个文件参与进去。
Project->Properties->Flex Compiler
在Additional compiler arguments中加入-services "services-config.xml"完成设定。
如果编译时无法检测到,那就干脆把整个文件路径进去吧。
比如我写的是 -services "F:\学习\Flex\HelloWorldByAmfphp\services-config.xml"
就要大功告成了。让我们来些最后的Flex程序。我们希望按下按钮去得到的服务器那里的sayhello方法的返回值,放到textarea中。代码很简单,我们来看。1 2 3 4 5 6 7 8 9 10
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="18"> <mx:RemoteObject id="amfphpRemoting" destination="amfphp" source="helloworld"/> <mx:TextArea width="400" height="100" text="{this.amfphpRemoting.sayHello.lastResult}"/> <mx:Button label="向后台同志们问好" click="this.amfphpRemoting.sayHello()"/> </mx:Application>
解释一下RemoteObject标签。
destination对应services-config.xml 文件中的<destination> source对应amfphp/service文件夹下php文件的路径。比如我们的helloworld.php直接放在service根目录下,那就只要写source="helloworld"就行了。如果目录结构是service\firstdemo\helloworld.php那就要写成source="firstdemo.helloworld"好了大功告成,调试运行一下看看结果。内牛满面了吧。
参考:
1.http://blog.corausir.org/for-life-real-life/ausir-573 台湾朋友写的教程,帮到很多。这篇文章很多地方借鉴了它
2.http://www.sephiroth.it/tutorials/flashPHP/flex_remoteobject/page002.php 另一个老外写的教程,同样很明白,细节上也讲得很清楚。
3.http://hi.baidu.com/xiaoxiaolq/blog/item/7984dcbfecb4fc0018d81f78.html 这基本是以上那篇的中文翻译
4.http://www.riachina.com/showtopic-10041.aspx 编码悲剧发生时参考了这里。
收藏到:Del.icio.us

评论