|
实例演示地址:http://www.52totem.com/test/liuyan.html (下面有附件下载)
如果想问什么是PHP的话,百度一下吧,再百度一下“如何配置PHP环境”,满地都是教程。
FLASH不能直接操作文件与数据库,于是就得通过PHP的行为来间接操作。留言板实现原理很表现了Flash做web开发的基本方式。动态脚本用JSP,ASP也都可以的,它们的功能就是从FLASH接收数据,然后写入文件或数据库,再将数据库给读取出来。这里以PHP为例。
这个留言板的基本原理:FLASH里填入数据,然后执行对外发送脚本;PHP即接收FLASH发送来的数据,经过整理加工,写入数据库,然后将数据库里的数据读取出来,输出成XML格式文档;FLASH再动态加载这个XML格式的PHP。
那么开始吧→_→【ps:下面的代码是基于对AS3有相对扎实了解的,可能还需要读者认真阅读,我已经尽量写了注释了】
首先是PHP,PHP从FLASH里一次接收这三个变量:inputName,inputContact,inputMessage。
这个是PHP文档,文件名是comments.php。需要确定已经建立好数据库,这里示例数据库是totem,表是comments,表规格是这样:(ID SMALLINT, SHIJIAN DATETIME, IP CHAR(15), NAME CHAR(20), CONTACT CHAR(20), MESSAGE CHAR(100), REPLY CHAR(100))。
接下来是AS3的脚本,有附件,是FLASH CS5 的。没有写文档类,代码写在幁上了
- import flash.net.URLRequest;
- import flash.net.URLLoader;
- import flash.events.MouseEvent;
- import flash.events.Event;
- var url:URLRequest = new URLRequest("http://www.hyieq.com/phps/comments.php");
- //上面的new URLRequest里就是要连接的php文件的位置,注意协议http,上面的只是示例位置。
- var loader:URLLoader = new URLLoader ;
- sendBtn.addEventListener(MouseEvent.CLICK,sendClick);
- var forbidChar:RegExp = new RegExp("[#&|*]");
- //这里用正则表达式来过滤一些不被允许的特殊字符
- function sendClick(e:MouseEvent)
- {
- //这个函数事先判断一下用户输入的是否含有非法字符
- if (inputName.text.match(forbidChar))
- {
- warning.text = "称呼含有非法字符,请重输";
- }
- else if (inputName.text=="")
- {
- warning.text = "称呼不能为空";
- }
- else if (inputContact.text.match(forbidChar))
- {
- warning.text = "联系方式含有非法字符,请重输";
- }
- else if (inputContact.text=="")
- {
- warning.text = "联系方式不能为空";
- }
- else if (inputMessage.text.match(forbidChar))
- {
- warning.text = "留言含有非法字符,请重输";
- }
- else if (inputMessage.text=="")
- {
- warning.text = "留言不能为空";
- }
- else
- {
- //如果都没问题了,则执行提交动作:
- warning.text = "提交中......";
- sendVars();
- }
- }
- function sendVars()
- {
- //这个函数就是执行发送任务了
- System.useCodePage = true;
- //关键句1:
- var variables:URLVariables=new URLVariables();
- variables.username = inputName.text;
- variables.usercontact = inputContact.text;
- variables.usermessage = inputMessage.text;
- //关键句2:
- url.method = "post";
- url.data = variables;
- //关键句3:
- loader.load(url);
- loader.addEventListener(Event.COMPLETE,loaded);
- //上面这句其实是整个发送的配套动作,AS3里发送与读取是要一块执行的
- pageNum = 1;
- }
- var myXML:XML;
- var pageNum:int = 1,pageTotal:int,pagePerNum:int;
- function loaded(e:Event)
- {
- //等待完成加载动作后,其实就可以直接读取PHP里生成的XML格式文档了
- showPage.text = pageNum + "/" + pageTotal;
- inputName.text = "";
- inputContact.text = "";
- inputMessage.text = "";
- warning.text = "完成!";
- myXML = new XML(e.currentTarget.data);
- pageTotal = int(myXML.zongyeshu);
- pagePerNum = int(myXML.yetiaoshu);
- showPage.text = pageNum + "/" + pageTotal;
- loadList();
- }
- function loadList()
- {
- //加载顺序留言列表
- for (var i:int=0; i 1 ? pageNum--:0;
- showPage.text = pageNum + "/" + pageTotal;
- loadList();
- }
- function downclick(e:MouseEvent)
- {
- pageNum < pageTotal ? pageNum++:0;
- showPage.text = pageNum + "/" + pageTotal;
- loadList();
- }
- function defaultLoad()
- {
- //默认没发送数据的情况加载一次留言列表
- System.useCodePage = true;
- warning.text = "加载中...";
- loader.load(url);
- loader.addEventListener(Event.COMPLETE,loaded);
- }
- defaultLoad();
然后上传到自己的本地服务器测试一下吧,祝读者成功!
下面是附件(这个附件是不能直接运行的,里面是写好的代码而已,还需要自己配置好环境和MySQL,按上例做的话才可测试):
|
|
|