| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
没有相关文章

Flash处理外部XML文档数据           

Flash处理外部XML文档数据

作者:choosefl… 来源:幽幽天空 更新:2007-6-25 12:58:03 错误报告 我要投稿

实例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一样调用.

上一页  [1] [2] [3] [4] [5] [6] [7] [8] 下一页

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。