打開Flash新建一個Flash文檔,保存到剛才的xml文檔的目錄中,命名為 xml-02.fla。在第一幀中輸入以下代碼:
//xml-002.fla. //實例化一個xml對象. var myxml:XML = new XML(); //分析時忽略xml文檔中的空格. myxml.ignoreWhite = true; //加載xml-002.xml文檔. myxml.load("xml-002.xml"); //調(diào)用XML.onLoad事件. myxml.onLoad = function(success:Boolean) { //如果加載成功,success=true;否則success=false; if (success) { trace("加載成功!"); //輸出頂層節(jié)點的節(jié)點名和頂層節(jié)點中屬性name的值. trace(myxml.firstChild.nodeName+":"+myxml.firstChild.attributes.name); //用一個數(shù)組來引用頂層節(jié)點中子級節(jié)點的數(shù)組. var child_arr:Array = myxml.firstChild.childNodes; //用嵌套for語句遍歷出xml文檔中的所有數(shù)據(jù). //這個for遍歷的是頂層節(jié)點下的子級節(jié)點. for (var i = 0; i<child_arr.length; i++) { //輸出頂層節(jié)點下的子級節(jié)點的節(jié)點名和頂層節(jié)點下的子級節(jié)點中屬性name的值. trace(child_arr[i].nodeName+":"+child_arr[i].attributes.name); //這個for遍歷的是頂層節(jié)點下的子級節(jié)點下的子級節(jié)點. for (var j = 0; j<child_arr[i].childNodes.length; j++) { //輸出頂層節(jié)點下的子級節(jié)點下的子級節(jié)點的節(jié)點名 和 頂層節(jié)點下的子級節(jié)點下的子級節(jié)點中屬性name的值.不要暈.看看輸出面板就會明白它們之間的關(guān)系了哦. trace(child_arr[i].childNodes[j].nodeName+":"+child_arr[i].childNodes[j].attributes.name); } } } else { trace("加載失敗!"); } };
實驗3: 利用xml文檔數(shù)據(jù)做用戶登錄。 新建一個xml文檔,在記事本中輸入下面的代碼,然后保存為 xml-003.xml。
<?xml version="1.0" encoding="gb2312"?> <!--xml-003.xml--> <UserDataList> <manager Post="經(jīng)理"> <UserData username="MChooseFlash01" password="MChooseHappiness" /> <UserData username="MChooseFlash02" password="MChooseHappiness" /> </manager> <Employee Post="職員"> <UserData username="EChooseFlash01" password="EChooseHappiness" /> <UserData username="EChooseFlash02" password="EChooseHappiness" /> </Employee> </UserDataList>
首先分析下結(jié)構(gòu): <UserDataList>是頂層節(jié)點。<manager Post="經(jīng)理">是頂層節(jié)點下的子級節(jié)點。Post是manager節(jié)點的屬性。<Employee Post="職員">是頂層節(jié)點下的子級節(jié)點,Post是Employee節(jié)點的屬性。 <UserData username="MChooseFlash01" password="MChooseHappiness" /> 是頂層節(jié)點下的子級節(jié)點下的子級節(jié)點,username和password是UserData節(jié)點的屬性。
這次也需要用到嵌套for。 打開Flash新建一個Flash文檔,大小為300*100,保存到剛才的xml文檔的目錄中,命名為 xml-03.fla。 新建3個圖層分別命名Actions 、cont 、 bg 。 bg層在第一幀畫三個文本框大小的虛線框。cont層在第一幀拉二個輸入文本框,實例名分別為username_txt和password_txt,在拉一個動態(tài)文本框,實例名為 status_txt。將這三個文本框?qū)R須虛線框,再點窗口->公用庫->按鈕,拉一個按鈕出來。實例名為login_btn。如圖:
Actions層在第一幀中輸入以下代碼:
//xml-003.fla. //使用系統(tǒng)編碼.防止亂碼. System.useCodepage = true; //實例化一個xml對象. var myxml:XML = new XML(); //分析時忽略xml文檔中的空格. myxml.ignoreWhite = true; //加載xml-002.xml文檔. myxml.load("xml-003.xml"); //調(diào)用XML.onLoad事件. myxml.onLoad = function(success:Boolean) { //如果加載成功,success=true;否則success=false; if (success) { trace("加載成功!"); login_btn.onRelease = function() { //用一個數(shù)組來引用頂層節(jié)點中子級節(jié)點的數(shù)組. var child_arr:Array = myxml.firstChild.childNodes; //用UserData指定xml文檔節(jié)點的attributes對象. var UserData:Object; //這個for遍歷的是頂層節(jié)點下的子級節(jié)點. for (var i = 0; i<child_arr.length; i++) { //這個for遍歷的是頂層節(jié)點下的子級節(jié)點下的子級節(jié)點. for (var j = 0; j<child_arr[i].childNodes.length; j++) { //用UserData指定child_arr[i].childNodes[j].attributes對象 UserData = child_arr[i].childNodes[j].attributes; //判斷用戶名和密碼. //這里的UserData.username其實就是child_arr[i].childNodes[j].attributes.username的簡寫.UserData.password同理. //username和password是xml文檔節(jié)點中的屬性.因為xml和Flash區(qū)分大小寫.所以在輸入時要注意大小寫. if ((username_txt.text == UserData.username) && (password_txt.text == UserData.password)) { //Post這個是頂層節(jié)點下子級節(jié)點的Post屬性. status_txt.text = child_arr[i].attributes.Post+":"+UserData.username+"登錄成功"; //如果用戶名和密碼正確就退出for.這個重要.如果不用這個,就會一直重復判斷用戶名和密碼.直到將xml文檔節(jié)點遍歷完.那樣就不是我們想要的.所以一有正確的就退出for; return; } else { status_txt.text = "用戶名或密碼錯誤"; } } } }; } else { trace("加載失敗!"); } };
經(jīng)典論壇討論: http://bbs.blueidea.com/thread-2743872-1-1.html
出處:藍色理想
責任編輯:elesa
上一頁 Flash處理XML文檔數(shù)據(jù)教程 [2] 下一頁 Flash處理XML文檔數(shù)據(jù)教程 [4]
◎進入論壇Flash專欄版塊參加討論
|