(9)使用IE浏览“listXML.asp”,这个XML文件的结构比较简单,每条留言记录都是一个XML节点名为“item”,使用节点属性来存放数据,XML结构可以更为简洁,如图14-4所示。
图14-3 listXML.asp
(10)打开Flash先制作一个用于显示留言列表的“显示条”,画个矩形背景再创建两个文本框名为“title”和“date”用来显示标题和日期,如图14-5所示。
图14-4 制作“显示条”
(11)将“显示条”转化为影片剪辑名为“item”,类路径为“com.GB4.Item”,如图1- 所示。
图14-5 转化为影片剪辑
(12)编写显示条的AS类文件“Item.as”。
AS3代码
package com.GB4{ import flash.display.*; import flash.events.*; import flash.events.IOErrorEvent; import flash.system.System; import flash.text.TextField; public class Item extends MovieClip { var id:Number; public function Item() { stop(); this.addEventListener(MouseEvent.MOUSE_OVER,overFun); this.addEventListener(MouseEvent.MOUSE_OUT,outFun); this.addEventListener(MouseEvent.CLICK,clickFun); } private function overFun(event:MouseEvent):void { gotoAndStop(2); date.textColor=0x000000; title.textColor=0x000000; } private function outFun(event:MouseEvent):void { gotoAndStop(1); date.textColor=0xffffff; title.textColor=0xffffff; } private function clickFun(event:MouseEvent):void { main.showMsg(id) } } } |
(13)好了,再编写main文档类,我们先把数据读进去。
AS3代码
package com.GB4{ import flash.display.*; import flash.events.*; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.IOErrorEvent; import flash.system.System; import flash.utils.*;//使用MC时引入 import flash.text.TextField; import fl.transitions.Tween; import fl.transitions.easing.*; public class main extends Sprite { private var pageNum:Number = 0; private var item:Item; private var itemBox:Sprite; private var controlBar:ControlBar; public static var showMsg:Function; private var getXML:XML; private var msgBox:MsgBox = new MsgBox; private var writeBox:WriteBox = new WriteBox; private var thenPage:Number=1; private var allPage:Number=0; public function main() { showMsg=showMsgFun; controlBar=new ControlBar; controlBar.x=50; controlBar.y=300; addChild(controlBar); loadPage(1); addChild(msgBox); msgBox.visible=false; msgBox.x=120 msgBox.y = 50 writeBox.visible=false; writeBox.x=120 writeBox.y = 50 addChild(writeBox); writeBox.closeBt.addEventListener(MouseEvent.CLICK, hideWriteBox); msgBox.closeBt.addEventListener(MouseEvent.CLICK, hideMsgBox); controlBar.prevPage.addEventListener(MouseEvent.CLICK, prevPageFun); controlBar.nextPage.addEventListener(MouseEvent.CLICK, nextPageFun) controlBar.writeBt.addEventListener(MouseEvent.CLICK,writeFun) } /*加载数据库转化的XML文件*/ private function loadPage(_pageNum:Number):void { var myLoader:URLLoader = new URLLoader(); System.useCodePage=true; myLoader.addEventListener(Event.COMPLETE,loadComplete); myLoader.addEventListener(IOErrorEvent.IO_ERROR,loadError); myLoader.load(new URLRequest("http://localhost/GB4/listXML.asp?pageNum=" + (_pageNum-1) + "&tag=" + Math.random() * 50)); thenPage=_pageNum } /*XML文件获取转化*/ 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(); } |
技术看板:AS代码解释
第20行,初始化时先读取第1页。
第23行,私有函数loadPage()带有一个参数“_pageNum”控制要加载的页数,加载listXML留言列表文件。
第24行,文件的加载路径,读者可以跟据自己在IIS中设置的路径来修改,最后一个“&tag=”的作用防止读取缓存中的数据,所以多设了个变量“tag”并使用随机值保证每次都从数据库从新加载资料。
第30行,将所加载的页面赋给变量“thenPage”将当前页存放起来在翻动页面时使用。
第37行,加载成功后转化为XML对象“getXML”。
第38~43行,读取数据库所有留言数计算出总共页数,每页为10条记录,如果能被整除则取整为总页数否则取整加一为总页数。