实例4:
利用List组件做个mp3播放列表. 新建一个xml文档.在记事本中输入下面的代码.然后保存为 xml-004.xml
<?xml version="1.0" encoding="gb2312"?> <mp3List> <mp3 path="jmzcg.mp3">啊桑-寂寞在唱歌</mp3> <mp3 path="jmjywsls.mp3">寂寞是因为思念谁</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">爱情复兴(容祖儿)</mp3> <mp3 path="qrlg.mp3">水木年华-秋日恋歌</mp3> <mp3 path="qnyh.mp3">张国荣-倩女幽魂</mp3> <mp3 path="a.mp3">皇缀馨舻挠⑽母?酒吧里常放)</mp3> </mp3List>
xml结构: <mp3List>xml文档中的顶层节点. <mp3 path="jmzcg.mp3">啊桑-寂寞在唱歌</mp3>顶层节点下的子级节点.path是mp3节点下的属性."啊桑-寂寞在唱歌"是mp3的节点值.
- 打开Flash新建一个Flash文档,大小为200*150,保存到刚才的xml文档的目录中,命名为 xml-04.fla
- 新建2个图层分别命名Actions , cont .
- cont层中拉一个List组件到第一帧.大小为200*150,实例名为mp3_list.
- Actions层第一帧输入下面代码:
//xml-004.fla. //使用系统编码.防止乱码. System.useCodepage = true; //实例化一个xml对象. var myxml:XML = new XML(); //分析时忽略xml文档中的空格. myxml.ignoreWhite = true; //加载xml-004.xml文档. myxml.load("xml-004.xml"); //调用XML.onLoad事件. myxml.onLoad = function(success:Boolean) { //如果加载成功,success=true;否则success=false; if (success) { trace("加载成功!"); //用一个数组来引用顶层节点中子级节点的数组. var child_arr:Array = myxml.firstChild.childNodes; //这个for遍历的是顶层节点下的子级节点. for (var i = 0; i<child_arr.length; i++) { //将歌曲添加到List组件中. //child_arr[i].firstChild.nodeValue这个是xml节点的节点值. //child_arr[i].attributes.path这个是xml节点下的path属性. mp3_list.addItem({label:(i+1)+"."+child_arr[i].firstChild.nodeValue, data:child_arr[i].attributes.path}); } } else { trace("加载失败!"); } }; //listEvent函数是执行List组件中change事件 function listEvent():Void { //这个就是歌曲地址.用Sound类的loadSound方法就可以播放歌曲了.例:mysound.loadSound(mp3_list.selectedItem.data);详细请看帮助文档. trace(mp3_list.selectedItem.data); } //添加帧听器. mp3_list.addEventListener("change", listEvent);
ASP
ASP生成XML文档.常用的是利用ASP将数据库中的数据用XML文档格式显示.方便Flash调用或应用在其它方面. ASP基础这里就不做说明了,不过会尽量让大家都明白(不明白的请提问).
说明:
因为是访问ASP,需要通过IIS,Flash默认是访问本地文件的.不能访问网络.所以要将访问本地改成访问网络. 在 文件-->发布设置-->Flash 选项卡的最下面的"本地回放安全性"选项中的"只访问本地文件"改成 "只访问网络", 下面发布的Flash,如没特殊说明,都按此设置.
实验5:
先做一个简单的实验.用ASP生成XML文档. 打开记事本,输入下面的代码,然后保存为 xml-005.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% 'xml-005.asp '设置文档类型 Response.ContentType="text/xml" '输出XML文档,用一个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新建一个网站,别名xml,路径为刚才的asp文件的目录. 然后在IIS中浏览刚才的asp文件,看到的就是一个xml文档,不同的就是后缀名,写法. 那现在怎样在Flash中调用呢? 很简单.打开之前的 xml-001.fla 文件, 将加载xml的地址改成 xml-005.asp 文件的地址就行了. 例:
myxml.load("http://localhost/xml/xml-005.asp");
但这样还不行.还要加上个随机数,防止调用缓存.改成下面这样.
myxml.load("http://localhost/xml/xml-005.asp?ran="+Math.random(9999));
这个效果跟之前做的xml-001.fla效果是一样的.只是xml文档换成asp生成的了.
实验6:
这个实验跟上面的差不多.但数据是从数据库中调出来的.这样做就能很方便的更新数据了.
数据库:
打开Access数据库,新建一个空白数据库,命名为 Data.mdb,保存到之前asp文件的目录中. 再点 使用设计器创建表,新建二个表,表名分别为: -------------------------------------------------- first child -------------------------------------------------- first表中: 输入二个字段,分别为: -------------------------------------------------- firstID 自动编号 name 文本 -------------------------------------------------- 在 firstID 字段点右键-->主键,保存, 打开first表.在name字段输入一条数据,数据为: -------------------------------------------------- 1 -------------------------------------------------- 保存. child表中: 输入二个字段,分别为: -------------------------------------------------- childID 自动编号 name 文本 -------------------------------------------------- 在 childID 字段点右键-->主键,保存. 打开child表.在name字段输入三条数据,数据分别为: -------------------------------------------------- 1.1 1.2 1.3 -------------------------------------------------- 保存.关闭数据库. 数据库到这可以了.下面是ASP: 打开记事本,输入下面的代码,然后保存为 xml-006.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% 'xml-006.asp dim conn,rs,sqlcom '设置文档类型 Response.ContentType="text/xml" Response.Write("<?xml version='1.0'?>") Response.Write("<!--xml-006.asp-->") '创建连接对象 Set conn=Server.CreateObject("Adodb.Connection") '这里用字符串方法连接数据库. '"Provider=Microsoft.Jet.OLEDB.4.0; 这个是数据库驱动. 'Data Source="Server.MapPath("Data.mdb") 数据库文件的相对路径. conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("Data.mdb") '创建记录集对象. Set rs=Server.CreateObject("Adodb.RecordSet") '查询数据库的sql语句.因为 first 是SQL中的关键字,所以要用[]中括号括起来. sqlcom="select * from [first]" '执行sql语句. '1,1 只读. '1,3 可读可写. rs.Open sqlcom,conn,1,1 '如果记录集中有数据. if not rs.eof then '输出XML节点,rs("name")是first表中字段name的数据. Response.Write("<firstNode name='"&rs("name")&"'>") end if '关闭记录集 rs.Close '查询数据库的sql语句. sqlcom="select * from child" '执行sql语句. rs.Open sqlcom,conn,1,1 '用for语句将数据库中的数据循环出来. for k=1 to rs.RecordCount '输出XML节点,rs("name")是child表中字段name的数据. Response.Write("<childNode name='"&rs("name")&"' />") '移到下一条数据 rs.MoveNext Next '结束firstNode节点 Response.Write("</firstNode>") '关闭记录集 rs.Close '释放记录信对象 Set rs=nothing '关闭连接 conn.Close '释放连接对象 Set conn=nothing %>
然后在IIS中浏览xml-006.asp文件,会跟实验5的asp输出xml文档一样的. 在Flash中还是跟实验5一样调用.
出处:蓝色理想
责任编辑:moby
上一页 Flash处理外部XML文档数据 [3] 下一页 Flash处理外部XML文档数据 [5]
◎进入论坛Flash专栏版块参加讨论
|