(14)解析完XML文件,将其打印出来。
AS3代码
private function loadComplete(event:Event):void {
XML.ignoreWhitespace = true;
var str:String=event.target.data;
str=str.slice(0,str.lastIndexOf(">")+1);
getXML = new XML(str);
allPage =Number(getXML.@total)
if (allPage % 10==0) {
allPage=int(allPage/10)
}else {
allPage=int(allPage/10)+1
}
controlBar.showTxt.text="当前第"+thenPage+"页 总共"+allPage+"页"
printItem();
}
/*打印留言列表*/
private function printItem():void {
msgBox.visible = false;
writeBox.visible = false;
writeBox.inputBox.visible=true;
writeBox.sendDia.visible=false;
var setY=0;
if (itemBox!=null) {
removeChild(itemBox);
}
itemBox=new Sprite;
itemBox.x=50;
itemBox.y=50;
addChild(itemBox);
for (var i:uint; i<getXML.child("*").length(); i++) {
item=new Item();
item.y=setY;
setY+=23;
item.title.text=getXML.child(i).@title;
item.date.text=getXML.child(i).@date;
item.id=i;
itemBox.addChild(item);
}
}
技术看板:AS代码解释
第49~51行,如果itemBox已经有了,先移除。
第52行,itemBox用来放置所有item显示条。
第60行,读取XML中的“title”属性即留言标题。
第61行,读取XML中的“date”属性即留言日期。
(15)先测试下如图14-6 所示。
图14-6 XML列表转化测试
(16)接着往下做,制作控制框“ControlBar”,绘制翻页用的按钮和显示页数信息的框,各命名如图14-7 所示。
图14-7 代码
(17)翻页代码。
AS3代码
private function loadComplete(event:Event):void {
XML.ignoreWhitespace = true;
var str:String=event.target.data;
str=str.slice(0,str.lastIndexOf(">")+1);
getXML = new XML(str);
allPage =Number(getXML.@total)
if (allPage % 10==0) {
allPage=int(allPage/10)
}else {
allPage=int(allPage/10)+1
}
controlBar.showTxt.text="当前第"+thenPage+"页 总共"+allPage+"页"
printItem();
}
private function prevPageFun(event:MouseEvent):void {
if (thenPage > 1) {
loadPage(thenPage-1)
}
}
private function nextPageFun(event:MouseEvent):void {
if (thenPage < allPage) {
loadPage(thenPage+1)
}
}
技术看板:AS代码解释
第65行,显示当前页和总页数信息。
第68~71行,上翻一页。
第73~77行,下翻一页。
(18)点击留言列表后,显示详细信息,制作信息显示框“msgBox”如图14- 8 所示。
图14- 8 信息显示框
(19)显示详细数据。
AS3代码
private function showMsgFun(id:Number):void {
removeChild(itemBox);
itemBox=null;
msgBox.visible = true;
msgBox.showName.text = getXML.child(id).@name;
msgBox.qq.text = getXML.child(id).@qq;
msgBox.title.text = getXML.child(id).@title;
msgBox.msg.htmlText = getXML.child(id).@msg;
}
(20)测试下如图14-9 所示。
图14- 9测试
(21)显示数据制作完成,再编写留言发送和程序,提交留言数据的ASP程序“post.asp”。
ASP/Visual Basic代码
<!--#include file="head/conn.asp" -->
<%
postName=trim(request.form("in_name"))
qq=trim(request.form("in_qq"))
title=trim(request.form("in_title"))
msg=trim(request.form("in_content"))
set add = Server.CreateObject("ADODB.Recordset")
add.ActiveConnection = conn
add.Source = "SELECT * FROM book"
add.CursorType = 0
add.CursorLocation = 2
add.LockType = 2
add.Open()
add_numRows = 0
add.addnew
if qq<>"" then
add("qq")=int(qq)
else
add("qq")=0
end if
add("name")=postName
add("title")=title
add("msg")=msg
add.update
add.Close()
set add=nothing
%>
技术看板:ASP代码解释
第4~7行,接收Flash上传来的值。
第17~21行,因为“qq”字段是整型的,所以要先判断用户留言时是否有填写QQ号,默认为0。
第22~25行,写入数据库。
(22)在Flash中制作留言框“WriteBox”,如图14- 10 所示。
图14-10 留言发送框
(23)发送成功以后,会有一个提示框,制作提示框命名为“sendDia”如图14- 11 所示。
图14-11 提示框
(24)编写“WriteBox.as”代码。
AS3代码
import flash.display.*;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.URLVariables;
import flash.net.URLRequestMethod;
import flash.text.TextField;
import flash.events.MouseEvent;
import flash.events.*;
public class WriteBox extends MovieClip {
public function WriteBox() {
stop();
inputBox.sendBt.addEventListener(MouseEvent.CLICK, sendData);
sendDia.visible=true;
}
private function sendData(event:MouseEvent):void {
if (inputBox.showName.text==""||inputBox.msg.text=="") {
return;
}
var myLoader:URLLoader = new URLLoader();
var loadUrl:URLRequest=new URLRequest("http://localhost/GB4/post.asp");
var variables:URLVariables = new URLVariables();
&nbs, p; , ; variable, , s.in_name=inputBox.showName.text;
variables.in_qq=inputBox.qq.text;
variables.in_title=inputBox.title.text;
variables.in_content = inputBox.msg.text
;
loadUrl.data=variables;
loadUrl.method=URLRequestMethod.POST;
myLoader.addEventListener(Event.COMPLETE,loadComplete);
myLoader.addEventListener(IOErrorEvent.IO_ERROR,loadError);
myLoader.load(loadUrl);
}
private function loadComplete(event:Event):void {
sendDia.visible=true;
inputBox.visible=false;
inputBox.showName.text=inputBox.qq.text=inputBox.title.text=inputBox.msg.text="";
//留言成功以后,清空所有输入框
}
private function loadError(event:IOErrorEvent):void {
trace("加载出错");
}
}
}
技术看板:ASP代码解释
第14行,先隐藏提示框。
第17行,如果用户没有输入文字则不发送。
第20~23行,发送Flash上传来的值。
第32行,发送成功,。
第22~25行,写入数据库。
(25)制作完成测试程序。
以上就是Flash+ASP+XML+Access开发留言本,虽然内容比较多,大部分都是利用代码编写,但每一步都介绍的也很详细,也对代码进行讲解,希望大家看完本教程之后有所收获!
本文地址:http://www.45fan.com/bcdm/9853.html