實(shí)例4:
利用List組件做個(gè)mp3播放列表. 新建一個(gè)xml文檔.在記事本中輸入下面的代碼.然后保存為 xml-004.xml
<?xml version="1.0" encoding="gb2312"?> <mp3List> <mp3 path="jmzcg.mp3">啊桑-寂寞在唱歌</mp3> <mp3 path="jmjywsls.mp3">寂寞是因?yàn)樗寄钫l</mp3> <mp3 path="szwspdxd.mp3">老狼-睡在我上鋪的兄弟</mp3> <mp3 path="qf.mp3">誓言-求佛</mp3> <mp3 path="xyzth.mp3">下一站天后</mp3> <mp3 path="nswdxfm.mp3">伊能靜-你是我的幸福嗎</mp3> <mp3 path="aqfx.mp3">愛情復(fù)興(容祖兒)</mp3> <mp3 path="qrlg.mp3">水木年華-秋日戀歌</mp3> <mp3 path="qnyh.mp3">張國(guó)榮-倩女幽魂</mp3> <mp3 path="a.mp3">皇綴馨艫撓⑽母?酒吧里常放)</mp3> </mp3List>
xml結(jié)構(gòu): <mp3List>xml文檔中的頂層節(jié)點(diǎn). <mp3 path="jmzcg.mp3">啊桑-寂寞在唱歌</mp3>頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn).path是mp3節(jié)點(diǎn)下的屬性."啊桑-寂寞在唱歌"是mp3的節(jié)點(diǎn)值.
- 打開Flash新建一個(gè)Flash文檔,大小為200*150,保存到剛才的xml文檔的目錄中,命名為 xml-04.fla
- 新建2個(gè)圖層分別命名Actions , cont .
- cont層中拉一個(gè)List組件到第一幀.大小為200*150,實(shí)例名為mp3_list.
- Actions層第一幀輸入下面代碼:
//xml-004.fla. //使用系統(tǒng)編碼.防止亂碼. System.useCodepage = true; //實(shí)例化一個(gè)xml對(duì)象. var myxml:XML = new XML(); //分析時(shí)忽略xml文檔中的空格. myxml.ignoreWhite = true; //加載xml-004.xml文檔. myxml.load("xml-004.xml"); //調(diào)用XML.onLoad事件. myxml.onLoad = function(success:Boolean) { //如果加載成功,success=true;否則success=false; if (success) { trace("加載成功!"); //用一個(gè)數(shù)組來引用頂層節(jié)點(diǎn)中子級(jí)節(jié)點(diǎn)的數(shù)組. var child_arr:Array = myxml.firstChild.childNodes; //這個(gè)for遍歷的是頂層節(jié)點(diǎn)下的子級(jí)節(jié)點(diǎn). for (var i = 0; i<child_arr.length; i++) { //將歌曲添加到List組件中. //child_arr[i].firstChild.nodeValue這個(gè)是xml節(jié)點(diǎn)的節(jié)點(diǎn)值. //child_arr[i].attributes.path這個(gè)是xml節(jié)點(diǎn)下的path屬性. mp3_list.addItem({label:(i+1)+"."+child_arr[i].firstChild.nodeValue, data:child_arr[i].attributes.path}); } } else { trace("加載失敗!"); } }; //listEvent函數(shù)是執(zhí)行List組件中change事件 function listEvent():Void { //這個(gè)就是歌曲地址.用Sound類的loadSound方法就可以播放歌曲了.例:mysound.loadSound(mp3_list.selectedItem.data);詳細(xì)請(qǐng)看幫助文檔. trace(mp3_list.selectedItem.data); } //添加幀聽器. mp3_list.addEventListener("change", listEvent);
ASP
ASP生成XML文檔.常用的是利用ASP將數(shù)據(jù)庫中的數(shù)據(jù)用XML文檔格式顯示.方便Flash調(diào)用或應(yīng)用在其它方面. ASP基礎(chǔ)這里就不做說明了,不過會(huì)盡量讓大家都明白(不明白的請(qǐng)?zhí)釂?.
說明:
因?yàn)槭窃L問ASP,需要通過IIS,Flash默認(rèn)是訪問本地文件的.不能訪問網(wǎng)絡(luò).所以要將訪問本地改成訪問網(wǎng)絡(luò). 在 文件-->發(fā)布設(shè)置-->Flash 選項(xiàng)卡的最下面的"本地回放安全性"選項(xiàng)中的"只訪問本地文件"改成 "只訪問網(wǎng)絡(luò)", 下面發(fā)布的Flash,如沒特殊說明,都按此設(shè)置.
實(shí)驗(yàn)5:
先做一個(gè)簡(jiǎn)單的實(shí)驗(yàn).用ASP生成XML文檔. 打開記事本,輸入下面的代碼,然后保存為 xml-005.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% 'xml-005.asp '設(shè)置文檔類型 Response.ContentType="text/xml" '輸出XML文檔,用一個(gè)Response.Write()就可以做到的.這樣寫便于大家理解. Response.Write("<?xml version='1.0'?>") Response.Write("<!--xml-005.asp-->") Response.Write("<firstNode name='1'>") Response.Write("<childNode name='1.1' />") Response.Write("<childNode name='1.2' />") Response.Write("<childNode name='1.3' />") Response.Write("</firstNode>") %>
打開IIS新建一個(gè)網(wǎng)站,別名xml,路徑為剛才的asp文件的目錄. 然后在IIS中瀏覽剛才的asp文件,看到的就是一個(gè)xml文檔,不同的就是后綴名,寫法. 那現(xiàn)在怎樣在Flash中調(diào)用呢? 很簡(jiǎn)單.打開之前的 xml-001.fla 文件, 將加載xml的地址改成 xml-005.asp 文件的地址就行了. 例:
myxml.load("http://localhost/xml/xml-005.asp");
但這樣還不行.還要加上個(gè)隨機(jī)數(shù),防止調(diào)用緩存.改成下面這樣.
myxml.load("http://localhost/xml/xml-005.asp?ran="+Math.random(9999));
這個(gè)效果跟之前做的xml-001.fla效果是一樣的.只是xml文檔換成asp生成的了.
實(shí)驗(yàn)6:
這個(gè)實(shí)驗(yàn)跟上面的差不多.但數(shù)據(jù)是從數(shù)據(jù)庫中調(diào)出來的.這樣做就能很方便的更新數(shù)據(jù)了.
數(shù)據(jù)庫:
打開Access數(shù)據(jù)庫,新建一個(gè)空白數(shù)據(jù)庫,命名為 Data.mdb,保存到之前asp文件的目錄中. 再點(diǎn) 使用設(shè)計(jì)器創(chuàng)建表,新建二個(gè)表,表名分別為: -------------------------------------------------- first child -------------------------------------------------- first表中: 輸入二個(gè)字段,分別為: -------------------------------------------------- firstID 自動(dòng)編號(hào) name 文本 -------------------------------------------------- 在 firstID 字段點(diǎn)右鍵-->主鍵,保存, 打開first表.在name字段輸入一條數(shù)據(jù),數(shù)據(jù)為: -------------------------------------------------- 1 -------------------------------------------------- 保存. child表中: 輸入二個(gè)字段,分別為: -------------------------------------------------- childID 自動(dòng)編號(hào) name 文本 -------------------------------------------------- 在 childID 字段點(diǎn)右鍵-->主鍵,保存. 打開child表.在name字段輸入三條數(shù)據(jù),數(shù)據(jù)分別為: -------------------------------------------------- 1.1 1.2 1.3 -------------------------------------------------- 保存.關(guān)閉數(shù)據(jù)庫. 數(shù)據(jù)庫到這可以了.下面是ASP: 打開記事本,輸入下面的代碼,然后保存為 xml-006.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% 'xml-006.asp dim conn,rs,sqlcom '設(shè)置文檔類型 Response.ContentType="text/xml" Response.Write("<?xml version='1.0'?>") Response.Write("<!--xml-006.asp-->") '創(chuàng)建連接對(duì)象 Set conn=Server.CreateObject("Adodb.Connection") '這里用字符串方法連接數(shù)據(jù)庫. '"Provider=Microsoft.Jet.OLEDB.4.0; 這個(gè)是數(shù)據(jù)庫驅(qū)動(dòng). 'Data Source="Server.MapPath("Data.mdb") 數(shù)據(jù)庫文件的相對(duì)路徑. conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("Data.mdb") '創(chuàng)建記錄集對(duì)象. Set rs=Server.CreateObject("Adodb.RecordSet") '查詢數(shù)據(jù)庫的sql語句.因?yàn)?first 是SQL中的關(guān)鍵字,所以要用[]中括號(hào)括起來. sqlcom="select * from [first]" '執(zhí)行sql語句. '1,1 只讀. '1,3 可讀可寫. rs.Open sqlcom,conn,1,1 '如果記錄集中有數(shù)據(jù). if not rs.eof then '輸出XML節(jié)點(diǎn),rs("name")是first表中字段name的數(shù)據(jù). Response.Write("<firstNode name='"&rs("name")&"'>") end if '關(guān)閉記錄集 rs.Close '查詢數(shù)據(jù)庫的sql語句. sqlcom="select * from child" '執(zhí)行sql語句. rs.Open sqlcom,conn,1,1 '用for語句將數(shù)據(jù)庫中的數(shù)據(jù)循環(huán)出來. for k=1 to rs.RecordCount '輸出XML節(jié)點(diǎn),rs("name")是child表中字段name的數(shù)據(jù). Response.Write("<childNode name='"&rs("name")&"' />") '移到下一條數(shù)據(jù) rs.MoveNext Next '結(jié)束firstNode節(jié)點(diǎn) Response.Write("</firstNode>") '關(guān)閉記錄集 rs.Close '釋放記錄信對(duì)象 Set rs=nothing '關(guān)閉連接 conn.Close '釋放連接對(duì)象 Set conn=nothing %>
然后在IIS中瀏覽xml-006.asp文件,會(huì)跟實(shí)驗(yàn)5的asp輸出xml文檔一樣的. 在Flash中還是跟實(shí)驗(yàn)5一樣調(diào)用.
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 Flash處理外部XML文檔數(shù)據(jù) [3] 下一頁 Flash處理外部XML文檔數(shù)據(jù) [5]
◎進(jìn)入論壇Flash專欄版塊參加討論
|