统计在线人数...

Flash处理外部XML文档数据

[ 来源:不详 | 作者:chooseflash | 时间:2007-9-11 下午 10:49:13 | 浏览:统计中... ]

第一帧.大小为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文档一样的.

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

    共有0人参与评价,平均得分:0分
    评论内容只代表网友观点,与本站立场无关! 查看完整内容
       

    当前在线人数
    QQ:748838 MSN:allen_xia#msn.com E-mail:allenxia666#126.com QQ群:站长联盟北方区-北京(28200145) 站长联盟南方区-上海(67713522)