(9)使用IE瀏覽“listXML.asp”,這個(gè)XML文件的結(jié)構(gòu)比較簡單,每條留言記錄都是一個(gè)XML節(jié)點(diǎn)名為“item”,使用節(jié)點(diǎn)屬性來存放數(shù)據(jù),XML結(jié)構(gòu)可以更為簡潔,如圖14-4所示。
圖14-3 listXML.asp
(10)打開Flash先制作一個(gè)用于顯示留言列表的“顯示條”,畫個(gè)矩形背景再創(chuàng)建兩個(gè)文本框名為“title”和“date”用來顯示標(biāo)題和日期,如圖14-5所示。
圖14-4 制作“顯示條”
(11)將“顯示條”轉(zhuǎn)化為影片剪輯名為“item”,類路徑為“com.GB4.Item”,如圖1- 所示。
圖14-5 轉(zhuǎn)化為影片剪輯
(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文檔類,我們先把數(shù)據(jù)讀進(jìn)去。
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時(shí)引入 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) } /*加載數(shù)據(jù)庫轉(zhuǎn)化的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文件獲取轉(zhuǎn)化*/ 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="當(dāng)前第"+thenPage+"頁 總共"+allPage+"頁" printItem(); } |
技術(shù)看板:AS代碼解釋
第20行,初始化時(shí)先讀取第1頁。
第23行,私有函數(shù)loadPage()帶有一個(gè)參數(shù)“_pageNum”控制要加載的頁數(shù),加載listXML留言列表文件。
第24行,文件的加載路徑,讀者可以跟據(jù)自己在IIS中設(shè)置的路徑來修改,最后一個(gè)“&tag=”的作用防止讀取緩存中的數(shù)據(jù),所以多設(shè)了個(gè)變量“tag”并使用隨機(jī)值保證每次都從數(shù)據(jù)庫從新加載資料。
第30行,將所加載的頁面賦給變量“thenPage”將當(dāng)前頁存放起來在翻動(dòng)頁面時(shí)使用。
第37行,加載成功后轉(zhuǎn)化為XML對象“getXML”。
第38~43行,讀取數(shù)據(jù)庫所有留言數(shù)計(jì)算出總共頁數(shù),每頁為10條記錄,如果能被整除則取整為總頁數(shù)否則取整加一為總頁數(shù)。