比較完整簡(jiǎn)潔的Flash處理XML文檔數(shù)據(jù)教程 上篇
更新時(shí)間:2007年12月12日 21:43:23 作者:
打開Flash新建一個(gè)Flash文檔,保存到剛才的xml文檔的目錄中,命名為 xml-02.fla。在第一幀中輸入以下代碼:
復(fù)制代碼 代碼如下:
//xml-002.fla.
//實(shí)例化一個(gè)xml對(duì)象.
var myxml:XML = new XML();
//分析時(shí)忽略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é)點(diǎn)的節(jié)點(diǎn)名和頂層節(jié)點(diǎn)中屬性name的值.
trace(myxml.firstChild.nodeName+":"+myxml.firstChild.attributes.name);
//用一個(gè)數(shù)組來(lái)引用頂層節(jié)點(diǎn)中子級(jí)節(jié)點(diǎn)的數(shù)組.
var child_arr:Array = myxml.firstChild.childNodes;
//用嵌套for語(yǔ)句遍歷出xml文檔中的所有數(shù)據(jù).
//這個(gè)for遍歷的是頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn).
for (var i = 0; i<child_arr.length; i++) {
//輸出頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn)的節(jié)點(diǎn)名和頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn)中屬性name的值.
trace(child_arr[i].nodeName+":"+child_arr[i].attributes.name);
//這個(gè)for遍歷的是頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn).
for (var j = 0; j<child_arr[i].childNodes.length; j++) {
//輸出頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn)的節(jié)點(diǎn)名 和 頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn)中屬性name的值.不要暈.看看輸出面板就會(huì)明白它們之間的關(guān)系了哦.
trace(child_arr[i].childNodes[j].nodeName+":"+child_arr[i].childNodes[j].attributes.name);
}
}
} else {
trace("加載失敗!");
}
};
利用xml文檔數(shù)據(jù)做用戶登錄。
新建一個(gè)xml文檔,在記事本中輸入下面的代碼,然后保存為 xml-003.xml。
復(fù)制代碼 代碼如下:
<?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é)點(diǎn)。<manager Post="經(jīng)理">是頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn)。Post是manager節(jié)點(diǎn)的屬性。<Employee Post="職員">是頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn),Post是Employee節(jié)點(diǎn)的屬性。
<UserData username="MChooseFlash01" password="MChooseHappiness" /> 是頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn),username和password是UserData節(jié)點(diǎn)的屬性。
這次也需要用到嵌套for。
打開Flash新建一個(gè)Flash文檔,大小為300*100,保存到剛才的xml文檔的目錄中,命名為 xml-03.fla。
新建3個(gè)圖層分別命名Actions 、cont 、 bg 。
bg層在第一幀畫三個(gè)文本框大小的虛線框。cont層在第一幀拉二個(gè)輸入文本框,實(shí)例名分別為username_txt和password_txt,在拉一個(gè)動(dòng)態(tài)文本框,實(shí)例名為 status_txt。將這三個(gè)文本框?qū)R須虛線框,再點(diǎn)窗口->公用庫(kù)->按鈕,拉一個(gè)按鈕出來(lái)。實(shí)例名為login_btn。如圖:
Actions層在第一幀中輸入以下代碼:
復(fù)制代碼 代碼如下:
//xml-003.fla.
//使用系統(tǒng)編碼.防止亂碼.
System.useCodepage = true;
//實(shí)例化一個(gè)xml對(duì)象.
var myxml:XML = new XML();
//分析時(shí)忽略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()
{
//用一個(gè)數(shù)組來(lái)引用頂層節(jié)點(diǎn)中子級(jí)節(jié)點(diǎn)的數(shù)組.
var child_arr:Array = myxml.firstChild.childNodes;
//用UserData指定xml文檔節(jié)點(diǎn)的attributes對(duì)象.
var UserData:Object;
//這個(gè)for遍歷的是頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn).
for (var i = 0; i<child_arr.length; i++) {
//這個(gè)for遍歷的是頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn).
for (var j = 0; j<child_arr[i].childNodes.length; j++) {
//用UserData指定child_arr[i].childNodes[j].attributes對(duì)象
UserData = child_arr[i].childNodes[j].attributes;
//判斷用戶名和密碼.
//這里的UserData.username其實(shí)就是child_arr[i].childNodes[j].attributes.username的簡(jiǎn)寫.UserData.password同理.
//username和password是xml文檔節(jié)點(diǎn)中的屬性.因?yàn)閤ml和Flash區(qū)分大小寫.所以在輸入時(shí)要注意大小寫.
if ((username_txt.text == UserData.username) && (password_txt.text == UserData.password)) {
//Post這個(gè)是頂層節(jié)點(diǎn)下子級(jí)節(jié)點(diǎn)的Post屬性.
status_txt.text = child_arr[i].attributes.Post+":"+UserData.username+"登錄成功";
//如果用戶名和密碼正確就退出for.這個(gè)重要.如果不用這個(gè),就會(huì)一直重復(fù)判斷用戶名和密碼.直到將xml文檔節(jié)點(diǎn)遍歷完.那樣就不是我們想要的.所以一有正確的就退出for;
return;
} else {
status_txt.text = "用戶名或密碼錯(cuò)誤";
}
}
}
};
} else {
trace("加載失敗!");
}
};
相關(guān)文章
AS3.0 實(shí)例學(xué)習(xí) 熟悉addChild和removeChild在不同的swf之間的運(yùn)用,以及l(fā)oader的用法
這篇文章通過實(shí)例給大家介紹了AS3.0 實(shí)例學(xué)習(xí) 熟悉addChild和removeChild在不同的swf之間的運(yùn)用,以及l(fā)oader的用法,非常不錯(cuò),需要的朋友參考下吧2007-12-12利用asp或jsp,flash怎樣把數(shù)據(jù)庫(kù)中的一張表中的所有記錄讀取并顯示出來(lái)
利用asp或jsp,flash怎樣把數(shù)據(jù)庫(kù)中的一張表中的所有記錄讀取并顯示出來(lái)...2006-11-11flash as Actionscript中的數(shù)組的使用方法
flash as Actionscript中的數(shù)組的使用方法...2007-11-11