週日 CG 接到一位網路上的朋友的問題,要求用 flash ActionScript 實現從服務端讀取動態生成的數據並且進行解析,輸入到用戶界面的小程序今天代碼放上來與大家分享,實現過程很簡單,供初學者學習,也希望老鳥指正。
要求:BS 結構下,客戶端使用 flash 從服務端讀取動態生成的 XML 格式數據,並將獲取的數據進行解析和發送到界面顯示。
XML 格式:
? ??? sdfsdf ??? 2009-10-10 ??? 2009-10-01 ??? 56456 ??? 良好 ??? 否 ? ? ??? dfgdfgdfg ??? 2009-10-10 ??? 2009-10-01 ??? 23 ??? 良好 ??? 否 ?
要求解析成單個 user 對象並使用 Array 保存,其中 user 對象包含 XML 中的數據的屬性
主要代碼:
package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.xml.*;
public class FlashXml extends Sprite
{
//UserInfo 業務對象實例
private var bui = new BUserInfo() ;
//XML 緩存
private var XmlData;
// 用戶列表
private var userList;
//constructor
public function FlashXml() {
//加載XML
loadXml();
}
/\*\*
\*方法名:loadXml
\*功能:加載外部XML數據
\*/
private function loadXml():void{
var loader:URLLoader = new URLLoader();
//設置Loader的事件監聽
configureListeners(loader);
//URL請求對象,從配置類中獲取URL
var request:URLRequest = new URLRequest(ApplicationConfig.RequestURL);
try {
loader.load(request);
} catch (error:Error) {
trace("加載XML錯誤.");
}
}
/\*\*
\*方法名:configureListeners
\*功能:設置對象的事件監聽
\*/
private function configureListeners(dispatcher:IEventDispatcher):void {
//加載完成
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
//設置讀取完成事件綁定
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
//捕獲安全錯誤和IO錯誤
dispatcher.addEventListener(SecurityErrorEvent.SECURITY\_ERROR, securityErrorHandler);
}
/\*\*
\*方法名:completeHandler
\*功能:XML數據加載完畢之後操作
\*/
private function completeHandler(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
this.XmlData = new XML(loader.data);
userList = bui.GetUserInfoList(XmlData);
this.XmlParse()
}
/\*\*
\*方法名:securityErrorHandler
\*功能:Flash安全配置限制
\*/
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("SecurityError: " + event);
}
/\*\*
\*方法名:ioErrorHandler
\*功能:IO錯誤
\*/
private function ioErrorHandler(event:IOErrorEvent):void {
trace("IOError: " + event);
}
/\*\*
\*方法名:XmlParse
\*功能:解析XML的簡單測試
\*/
private function XmlParse():void {
//用戶Array的遍歷
for each(var user:UserInfo in userList){
trace(user.getUid());
trace(user.getTitle());
trace(user.getBeginTime());
trace(user.getEndTime());
trace(user.getCurrentMoney());
trace(user.getState());
trace(user.getIsMember());
}
}
}
}
代碼說明 UserInfo 為包含 user 全部信息的實體類,BUserInfo 則是 UserInfo 實體的業務層基本業務類,其中包含返回所有用戶列表的 GetUserInfoList () 方法,具體可以參看的完整源代碼。
完整源代碼下載地址: http://www.lidaren.com/code/FLashXML/src.zip