开发者社区


Web服务 | ASP/ASP.Net | JSP | PHP/Perl | 网站设计
首页 - WEB技术
Web技术
全文搜索:   

为Flash MX创建XML解决方案
作者: Builder.com
2004-04-20 11:41:55



本文译自Builder.com,未经许可请勿转载

Macromedia在Flash 5.0 和MX中提供了诸多新特点,它正朝着程序开发竞争舞台发展。这些特性中的其中一个就是在Flash中综合了XML。即使你不是一个Flash设计者,你也可以将XML知识运用到Flash的测试中去。

不需要花费多大工夫,你就可以掌握足够的Flash知识来创建一个完整的解决方案。Flash是基于动画的原理,因为事件通常是按照时间顺序发生的,被分解为不同的框架。但是,通过使用ActionScript,不需要许多框架构成整个动画,你就可以处理这些事件并操纵一部动画。在我举的实例中,我只用一个框架创建了一个电话目录地址。

ActionScript则是基于ECMA-262标准,因此它和JavaScript非常像。如果你熟悉JavaScript,那适应ActionScript应该不会有问题。

我创建的电话地址目录非常简单。你键入你想找的人的Last name或Last name的一部分。然后这个“Last name”的数据被传送到一个ASP页面,这个页面在请求中使用查询字符串数据,对一个Microsoft Access数据库进行搜索,寻找匹配字符。返回记录集,转变为XML,以XML形式返回到Flash动画。接着Flash动画解析XML并显示结果集合。

Flash动画只包含了一个文本输入框来输入“Last name”和启动搜索的按钮。其结果从一个动画片段符号示例说明为单个动画片段。(不用参考完整的Flash指南,你可以在这篇文章的结尾找到链接到源代码的地址。)

Flash提供了一个XML对象类来创建XML方案。XML对象中的load()方式让你可以从远程主机上下载数据。当数据下载完成时,XML对象的“onLoad”事件出现。

你可以通过将这个“onLoad”事件设置为一个有效的函数名,来为XML对象提供一个事件处理程序。Flash的 XML对象并没有提供许多功能给检索过的XML。但是,你可以用一些灵活的设计来创建一些巧妙的解决方案。

下面就是为XML对象设计的“onLoad”事件处理程序:

function myXML_onLoad() {
    for (var p = 0; p < pcount; p++) {
        removeMovieClip(_level0["phone" + p]);
    }
    for (var i = 0; i < myXML.childNodes.length; i++) {
        var node = myXML.childNodes[i];
        attachMovie("phone", "phone" + i, i);
        var newMovie = _level0["phone" + i];
        newMovie._x = lblHeading._x;
        newMovie._y = (lblHeading._y + lblHeading._height) + (i * (lblHeading._height + 2));
        for (var n = 0; n < node.childNodes.length; n++) {
            var child = node.childNodes[n];
            newMovie[child.nodeName] = child.childNodes[0].nodeValue;
        }
    }
    pcount = i;
}

 

第一个for()循环从以前的结果集合中删除现有的动画片段。下一个for()循环重复XML对象(myXML)中的每个子节点(childNode)。一个新的电话动画片段符号实例被添加并放置在每个循环过程中。电话动画片段符号包含了几个和XML文件所有childNode的nodeNames相匹配的组件变量。这些用来设置所有动画片段符号的文本。值得注意的一件事就是child.childNodes[0].nodeValue属性的调用。当一个正常节点随着开始和结束标志之间的文本一起返回时,那个文本就是一个文本节点。你必须参考元素中的子节点来获取元素的内容。下面就是一个被返回的XML实例:

    <row>
        <first_name>John</first_name>
        <last_name>Public</last_name>
        <phone>800-555-1212</phone>
    </row>

 

【下一页】
声明:
Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
近期相关报道:
实用技术文档
J2me XML
C/C++ C#
Java Oracle
Mysql .Net
VB.NET CSS
SQL Server 数据库
SQL UNIX
Linux Jsp
PHP Perl
Javascript IIS
XHTML ColdFusion
ASP/ASP.NET Apache
AJAX
订阅技术邮件
订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
应用开发管理
VS.NET 周刊
Database 周刊
WEB Service周刊
JAVA 周刊
IT 认证
Windows服务器周刊
互联网开发
当Windows Server 2008专家得5000元现金大奖
CNET NETWORKS 中国: 爱卡汽车网 | CNET科技资讯网 | e询网 | CWEEK | 蜂鸟网 | GameSpot China | 个人电脑 | PChome | SPN | 网友世界 | ZDNet China | 中关村在线
CNET NETWORKS 美国: BNET | CNET.com | CNET Download.com | CNET News.com | CNET Reviews | CNET Shopper.com | GameSpot | MP3.com | mySimon | Release 1.0 | Search.com | TechRepublic | TV.com | Webshots | ZDNet
Copyright (c) 2006 CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号