`

FLASH+XML教程(一)

阅读更多

在FLASH中,使用XML接口获取外部数据是最有效的方法之一.(通常还有WebSerivce接口和LoadVars方法)
下面来看一个简单的XML文档(city.xml)
这个文档描述的是城市地区的信息

xml version="1.0" encoding="gb2312"?>
<root>
<city name="上海" code="021" pnum="500000"/>
<city name="北京" code="010" pnum="600000"/>
<city name="浙江" code="057" pnum="1000000"/>
root>
简单介绍一下XML文档格式的书写规范:
第一行:
这是一个XML文档的描述信息.其中定义了该XML文档的一些基本属性,包括:版本信息(version),使用的字符编码(encoding).

第二行:
(虽然在FLASH中我们用不到节点的任何属性,但是合式的XML文档必须要求一个根节点)
在XML文档中,这是一个根节点.XML规定所有标签必须有闭合.所以,在最后一行使用对应的标签来闭合.同样,单行的XML节点也需要闭合,例如:其中"/"符号就表示单行的节点闭合."name","code","pnum"是节点的属性,写法就是:属性名="属性值" 这样的名/值对.至于节点名和属性名都是可以自定义的,也就是说可以任意命名.但是还是建议要尽量规范

""节点是""的子节点,相应的""叫做""的父节点

在这个XML文档中有3个子节点,我们数据就存储在这3个子节点的属性中,分别有:城市名称(name),城市代码(code),城市人口数目(pnum)
我们要做的最终目的就是在FLASH中获取这些节点的属性值

下面来看一个FLASH调用XML的实例

System.useCodepage = true;
var doc:XML = new XML();
doc.load("city.xml");
doc.ignoreWhite = true;
doc.onLoad = function(success){
if(success){
trace(doc.childNodes[0].childNodes[0].attributes.name);
trace(doc.childNodes[0].childNodes[1].attributes.name);
trace(doc.childNodes[0].childNodes[2].attributes.name);
}
}
分析:

System.useCodepage = true;
如果在XML文档中使用了中文编码,例如"gb2312".那么在FLASH中必须启用使用页面编码的指令.

var doc:XML = new XML();
建立一个XML实例.赋予"doc"这个对象.

doc.load("city.xml");
"load()"-XML对象的一个方法:加载XML数据到"doc"这个对象当中.
提供XML数据的方式并不是限制于.xml的文件,任何符合XML书写格式的文档都可以,通常,我们是使用程序来提供XML数据的,例如"http://www.51ww.com/city.aspx?country=china"

doc.ignoreWhite = true;
"ignoreWhite"-XML对象的一个属性:指定XML文档忽略空白,因为在XML中一个换行在FLASH中会被视为一个节点

doc.onLoad = function(success){}
"onLoad"-XML对象的一个方法.将会返回一个布尔值"true或false".用来判断XML是否被成功加载.如果加载成功则会返回"true",反之则返回"false"
此处为该方法使用了一个函数,其参数"success"用来贮存上述的布尔值

if(success){}
一个判断语句:如果加载成功(即success的值为"true"),则触发括号内的动作

trace(doc.childNodes[0].childNodes[0].attributes.name);
输出doc(此时"city.xml"中的数据已经包含到doc这个XML对象当中)这个XML对象的第一个节点下的第一个子节点的"name"属性值
childNodes-XML对象的一个属性,它的值的类型是数组型.XML的一个节点可以在FLASH中通过这个属性来表示其包含的数据.
由于FLASH中数组的长度计算是由"0"开始,所以我们XML文档中的第一个节点就存储在数组的"0"位置.而不是"1"
所以,我们取出XML文档的第一个节点-"",就应该表示成这样"childNodes[0]"
同样,我们取出XML对象根节点("")下的第一个子节点(""),就表示成doc.childNodes[0].childNodes[0]
相应的,取出第二个子节点:doc.childNodes[0].childNodes[1]
第三个子节点:doc.childNodes[0].childNodes[2]
(这一步中,需要涉及到FLASH中数组对象的使用原理)

在FLASH与XML的数据交互中,可能数据的表现是最难的一步.
针对上面数据表现方式,我们可以充分利用数组的便利性来做
假如已经获得一个XML对象"doc"


首先,我们将这个XML中使用到的数据转换为一个数组对象来表示
var myList:Array = doc.childNodes[0].childNodes;//直接将XML文档根节点下的的所有子节点放到一个数组中
trace(myList[0].attributes.name+","+myList[0].attributes.code+","+myList[0].attributes.pnum);//输出第一个"city"节点所有的属性值
trace(myList[1].attributes.name+","+myList[1].attributes.code+","+myList[1].attributes.pnum);//输出第二个"city"节点所有的属性值
trace(myList[2].attributes.name+","+myList[2].attributes.code+","+myList[2].attributes.pnum);//输出第三个"city"节点所有的属性值

输出结果:

上海,021,500000
北京,010,600000
浙江,057,1000000

/*以上完整的代码为*/
System.useCodepage = true;
var doc:XML = new XML();
doc.load("city.xml");
doc.ignoreWhite = true;
doc.onLoad = function(success){
if(success){
var myList:Array = doc.childNodes[0].childNodes;
trace(myList[0].attributes.name+","+myList[0].attributes.code+","+myList[0].attributes.pnum);
trace(myList[1].attributes.name+","+myList[1].attributes.code+","+myList[1].attributes.pnum);
trace(myList[2].attributes.name+","+myList[2].attributes.code+","+myList[2].attributes.pnum);
}
}
/*代码结束*/
为了在FLASH中其他的位置都能够访问到我们所需要的XML数据,我们可以将myList数组对象放置到上下文的任意位置
例如:

System.useCodepage = true;
var doc:XML = new XML();
var myList:Array = new Array();//预先建立一个数组对象用来放置XML节点数据,以便FLASH其他位置的代码都能够访问
doc.load("city.xml");
doc.ignoreWhite = true;
doc.onLoad = function(success){
if(success){
myList = doc.childNodes[0].childNodes;//当XML加载成功后对上文的myList数组对象进行赋值.
}
}


//使用一个按钮动作来获取数组对象中的一个CITY节点信息
btName.onPress = function(){
trace(_root.myList[0].attributes.name+","+_root.myList[0].attributes.code+","+_root.myList[0].attributes.pnum);
}
这样的写法当然还不满足我们一些复杂的需求,而且代码过冗长.
使用函数来返回我们需要的信息,应该是最正确的做法,我们来实现它
按下按钮时,向函数递交一个城市代码,返回城市名和人口信息

System.useCodepage = true;
var doc:XML = new XML();
var myList:Array = new Array();//预先建立一个数组对象用来放置XML节点数据,以便FLASH其他位置的代码都能够访问
doc.load("city.xml");
doc.ignoreWhite = true;
doc.onLoad = function(success){
if(success){
myList = doc.childNodes[0].childNodes;//当XML加载成功后对上文的myList数组对象进行赋值.
}
}

//函数开始
function getCityInfo(code){? //构建一个函数的写法是:function 函数名(参数){//脚本代码}
var cityName:String;//建立一个字符窜变量来存储城市名
var pepCount:String;//建立一个字符窜变量来存储居民数量
for(var i=0;i<myList.length;i++){
if(code eq myList[i].attributes.code){
cityName = myList[i].attributes.name;
pepCount = myList[i].attributes.pnum;
}
}
return "城市:"+cityName+",人口:"+pepCount //返回一段文字表达信息
}

//函数结束

??? /*按钮的动作*/
btName.onPress = function(){
trace(getCityInfo("010"));//输出函数的返回结果,(在函数的参数中提交城市代码-"010")
}

分享到:
评论
2 楼 m2maomao 2010-10-23  
恋曲2000 写道
lz 你用的是不是AS2呀?

没错是的。
1 楼 恋曲2000 2010-09-27  
lz 你用的是不是AS2呀?

相关推荐

    flash+asp+xml留言本教程 flash+asp+xml留言本教程

    本教程主要探讨如何结合Flash、ASP和XML技术来构建一个动态、美观且实用的留言本系统。Flash以其出色的动画效果和交互性,ASP作为后台处理程序,XML则负责数据的存储和交换,三者结合可以实现一个高效、易于维护的...

    flash+XML动态数据图表2饼图

    本主题聚焦于“Flash+XML动态数据图表2饼图”,这是一种利用Adobe Flash技术和XML数据格式来创建交互式饼图的方法。以下是关于这个主题的详细讲解: 1. **Flash技术**:Flash是一款由Adobe公司开发的多媒体创作平台...

    flash+xml迅雷影片广告特效

    1. 访问阿里西西WEB开发社区.html:这可能是一个指向网页的链接,可能包含了关于如何使用Flash+XML技术在类似迅雷这样的平台上创建广告的教程或者讨论。阿里西西(alixixi.com)可能是一个已经不存在的或改名的在线...

    6个非常精美的Web前端flash+xml焦点图代码(六)

    标题中的“6个非常精美的Web前端flash+xml焦点图代码(六)”指的是一个Web前端设计资源,包含了一个使用Flash和XML技术实现的焦点图组件。这个组件是第六个系列的一部分,可能是一个系列教程或者一组设计示例。焦点...

    Flash+xml仿实现3D轮换图片效果,超赞

    本教程将聚焦于如何利用Flash和XML技术实现一个惊艳的3D图片轮播效果。Flash,作为一款强大的动画和交互设计工具,可以与XML这种轻量级的数据格式结合,以动态、灵活的方式展示内容。 首先,我们要理解3D图片轮播的...

    Flash+xml+asp源码(2)

    这里我们主要探讨“Flash+xml+asp源码(2)”这一主题,这通常意味着一个结合了这些技术的实际项目或教程示例。下面我们将深入解析这三个技术的核心概念及其在实际应用中的结合。 首先,Flash是一种由Adobe公司开发的...

    实用的FLASH+XML相册代码

    【标题】:“实用的FLASH+XML相册代码”是指一种基于Adobe Flash技术和XML(可扩展标记语言)的数据交换技术,用于创建动态、交互式的在线相册应用。Flash提供了丰富的动画和用户界面功能,而XML则作为数据存储和...

    flash+xml.rar_FLASH XML_flash flv xml_xml_xml flash

    压缩包内的文件“Flash+xml.chm”可能是一个帮助文件,提供了关于Flash和XML结合使用的详细教程和示例。“xml.chm”可能是关于XML语言本身的基础知识和使用指南。“www.pudn.com.txt”可能是一个链接或引用文件,...

    FLASH+XML超酷广告

    【标签】:“FLASH+XML超酷广告”标签明确了主题,表明这个压缩包内容可能包含了一系列使用Flash技术和XML来创建的广告示例、源代码、教程资料等。对于学习和理解如何结合这两种技术来提升网页广告效果的开发者和...

    FLASH+xml翻页代码

    例如,XML可以用来驱动Flash的翻页书效果,将每一页的内容存储为XML节点,Flash读取这些节点并渲染为翻页动画。 4. **翻页代码实现**:在Flash中,翻页效果通常通过ActionScript编写,利用帧动作、时间轴控制和形状...

    flash+xml.rar_FLASH XML_flash java

    这个压缩包可能包含了一个或多个示例项目,教程,或者是一个能够加载和处理XML数据的Flash播放器。 在Web开发中,Flash是一种广泛使用的多媒体和交互式内容创作工具,它允许开发者创建丰富的动态图形、动画和应用...

    实用专业的企业专用flash+xml模板

    Flash+XML模板作为一种高效且灵活的网页设计解决方案,深受企业和设计师的喜爱。本文将围绕"实用专业的企业专用Flash+XML模板"这一主题,深入探讨其核心特点、应用领域以及实现机制。 1. **核心特点** Flash+XML...

    flash+xml做treemenu树形分类链接

    教程通常会一步步引导用户了解如何构建XML文件,怎样在Flash中加载和解析XML,以及如何设计交互逻辑,比如点击节点时展开或收缩子节点,跳转到相应的链接等。 在标签中,“树形分类链接”进一步强调了这个项目是...

    flash+xml.rar_FLASH XML_Flash XML Picture_html轮换图片_toppicxml.xml

    标题中的“flash+xml.rar”指的是一个使用Flash技术与XML结合的压缩包文件,它主要用于创建动态的、可交互的图片轮换效果。在Web开发中,Flash曾是创建动画和交互性内容的流行工具,而XML(eXtensible Markup ...

    Flash+Xml 动态菜单4

    在实际应用中,"Flash+Xml 动态菜单4"可能是一个教程、示例项目或者是某个网站的一部分。对于学习者,这是一个很好的实践案例,可以学习到如何将Flash的动态性和XML的数据驱动特性结合起来,创建出交互性强、可扩展...

    图文左右排列大图焦点幻灯代码(flash+xml)

    【标题】"图文左右排列大图焦点幻灯代码(flash+xml)"所指的是一种网站设计技术,用于创建具有视觉吸引力的交互式展示效果。这种技术通常应用于网站的首页或者产品展示区域,通过动态切换大图并配以相关的文字介绍,...

    一个超好用的FLASH+XML效果

    标题中的“一个超好用的FLASH+XML效果”指的是使用Adobe Flash技术和XML(Extensible Markup Language)结合创建的动态展示效果。在Web开发领域,Flash曾经是制作交互式动画、网页元素,尤其是网站横幅(BANNER)的...

    一款flash+xml实现图片自动360度旋转展示

    提供更多的学习素材和教程,而“sc.xueit.com广告特效素材”可能是一个广告特效的素材库,包含各种可用于网站、APP等的动态效果,可能包含与Flash+xml技术相关的示例或模板。 总的来说,这个项目展示了如何结合...

    Flash+xml+asp源码(3)

    在描述中提到的"最好的FXA教程代码示例",FXA可能是指Flash与XML和ASP结合的简称。这表明该压缩包包含了一些教学性质的代码示例,帮助学习者理解如何将这三个技术整合在一起,创建具有动态内容和交互功能的Web应用。...

    Flash+xml制作精美相册.rar

    本教程将通过“Flash+xml制作精美相册.rar”这个压缩包,深入探讨如何利用Flash和XML技术打造一款精美的电子相册。 首先,我们来看核心文件“PhotoGalleryPreview.fla”。这是一个Flash源文件,其中包含了设计和...

Global site tag (gtag.js) - Google Analytics