欢迎光临
我们一直在努力

FLASH加载XML数据方法

即如何选择性地加载 XML 中的数据,这只是分析了如何得到 XML 中的数据以及如何进行分页。其实 FLA SH 用到 XML 也就这么多(当然, XML 文件不一定必须是 XML 格式的也可以存储为其它格式,也可以使用动态的语言生成 XML 数据,或者结合数据库进行存储,这些就要求我掌握除了 AS 以外的其它技术了相信能够对朋友有一点帮助,这只是将 FLA SH 加载 XML 原理向大家解析。所以提供给大家的也是一些做的比较粗糙的源文件,没有进行什么美化,如果你一位美术功底好的人,相信只要掌握了所教的一定能够做出很漂亮的作品进去替它打下广告,Xml 个好东西(呵呵。引用 XML 教程书上的话,每个学习网络的人都要会用它每个搞创作的人都要精通它虽然有点夸张,但是也是优点道理的作用和语法我就不在这里论述了FLA SH 如何加载,看到论坛上许多人提问。分页效果是怎么实现的如果你看了这个帖子,相信就会怎么使用 FLA SH 加载 XMLFLA SH 加载 XML 把 XML 当作节点来分析。 首先你要对 XML 语法有一些了解。下面是对 XML 简单分析。  20081125_79bfa428c4b6422e1f1e7uSTHmYRjuwn.jpg 39.44 KB2009-1-1 19:141. 下面我就用一个 booklist.xml 来做一下详细的分析!booklist.xml 内容如下:<?xml version="1.0"?><books>       <book>              <name>Think in Java</name>              <author>Bruc Eckel</author>              <pub src="1.jpg"> 机械工业 </pub>       </book>       <book>              <name> 朗文英语词典 </name>              <author>--</author>              <pub src="1.jpg"> 商务印书馆 </pub>       </book>       <book>              <name> 数据结构 </name>              <author> 严蔚敏 </author>              <pub src="1.jpg"> 清华大学 </pub>       </book>       <book>              <name>Databas Concepts</name>              <author>Oracl Corporation</author>              <pub src="1.jpg">Oracl Corporation</pub>       </book></books>理解了上面的图示的原理,如果我想得到 <pub src="1.jpg"> 机械工业 </pub> 中的图片地址怎么办呢(即 “ 1.jpg 如果你对 XML 有点了解。这个对你来说就容易了那么让我来实验下。FLA SH 中输入代码:设定 onLoad 时调用自己的函数解析 // 初始化对象。myXML = new XML ;myXML.ignoreWhit = true;// 下面是自定义的用来解析 XML 文件myXML.onLoad = function ok {       if ok {              bookTag = myXML.firstChild.firstChild.childNodes[2].attributes.src;              trace bookTag ;       } els {              trace "error" ;       }};myXML.load "booklist.xml" ;测试一下。不是有输出了 1.jpg只要在其中加入 _root.loadMovi bookTag 如过你想以这个图片地址导入图片。;否体验到 XML 魅力了不是可以利用这个功能做一个展示某产品的页面,2. 能够实现上面的功能也许有的人就想。并利用循环来均匀排列这些影片,当然能够拉,就来看看这样的效果是怎么实现的具体的过程见附件,这只是讲了基本的过程和主要的代码)新建一个 FLA SH 文档。如图:右键选择链接,建立一个影片剪辑。设置标志符为 main第一桢输入代码: 回到主场景。// 代码开始设定 onLoad 时调用自己的函数解析 // 初始化对象。myXML = new XML ;myXML.ignoreWhit = true;myXML.onLoad = function ok {       if ok {              item = myXML.firstChild.childNodes;              for i=0; i<item.length; i++ {                     name = item.firstChild.firstChild.nodeValue;                     trace name ;                     author = item.childNodes[1].firstChild.nodeValue;                     trace author ;                     pub = item.childNodes[2].firstChild.nodeValue;                     trace pub ;                     img = item.childNodes[2].attributes.src;                     trace img ;"main"+i,                     _root.attachMovi "main". i ;                     _root["main"+i]._x = 165*i;                     _root["main"+i].nam = name;                     _root["main"+i].author = author;                     _root["main"+i].pub = pub;                     _root["main"+i].loader.loadMovi img ;              }       } els {              trace "error" ;       }};myXML.load "booklist.xml" ;// 代码结束舞台上有了 XML 中设置 哈哈。附件:否能够对我加载的信息进行分页显示呢? 有些很有想法的朋友就不满足了会提出这样的问题。但是就掌握了两种,可以的进行分页显示通常有两种方法(也许有许多种。如果有朋友知道其它方法,还请指教呀,大家相互学习)设置遮罩来显示一个指定区域的信息,第一中是加载进全部信息。使用按钮或者鼠标直接拖动另一区域到遮罩下显示。代码如下:flash xml 动态分页// copyright by webstudio.com.cn.author by egoldy.2006.1.14// 初始化起始位置.Stage.scaleMode="noScale"System.useCodepage=true;var x = 3;var y = 3;// 设定图像的水平和竖向间距位置.图像的宽为 100*75 .间隔为 5var hspace = 105;var vspace = 80;以列为主. // 列和行数。var num_columna = 3;var num_rows=3;// 定义分页变量var pages;// 初始 xmlmyXML = new XML ;myXML.ignoreWhit = true;myXML.onLoad = function success {if success {// 创建一个空影片用于装载所有内容.0 _root.createEmptyMovieClip "mycont".;// 设定遮罩.及它宽高.mycont.setMask mask_mc ;mask_mc._width=hspace*num_columnas;mask_mc._height=vspace*num_rows;// xml 结点轮徇for var i = 0; i < this.firstChild.childNodes.length; i++ {// 计算出页数多少pages=Math.ceil i/ num_columnas*num_row ;trace page ;//xml 节点付值var thumb = this.firstChild.childNodes.attributes.id;i + 100 var holder_mc = mycont.createEmptyMovieClip "holder_mc" + i.;i + 100 var item = holder_mc.createEmptyMovieClip "butx" + i.;item.loadMovi thumb ;// 初始化 holder_mc 位置holder_mc._x = x;holder_mc._i = y;// 可以分配变量给 holder_mc 如果有的话holder_mc.url = this.firstChild.childNodes.attributes.url;holder_mc.onReleas = function {       getURL this.url ;};// holder_mc x 方向排列x += hspace;// 定义临时列数.var columna;columna += 1;每排完 3 个后向左移 ( hspace*num_columna ,// 控制列数 , 如果临时列数与我初定义的相同。//y 方向直接向下增加即可 .if columna == num_columna {       columna = 0;       x -= hspace * num_columna ;       y += vspace;}// 显示页号if pages>0 {       for var j=0;j<pages;j++ {"pag"+j,        var pag=_root.attachMovi "page_btn".j+100 ;        trace pag ;        trace page ;        pag._x = 5+j*30;pag._i = 260;// 指定一个 id. 为了后面移动 holder_mc 准备pag.id = j;// 按钮文字pag.info.text = j+1;pag.onPress = function {       // 设定按钮状态this.id        setButton pages.       // 移动 mycont 实现翻页.       mycont._y=- this.id* num_rows*vspac ;}       }}}}};myXML.load "http://www.webstudio.com.cn/wsswf/f...ge/imagenes.xml" ;// 设定按钮状态函数q function setButton tot.{       for var i = 0; i<=tot; i++ {              var but = this["pag"+i];              if i != q {                     but.gotoA ndStop 1 ;                     but.en = 1;              } els {                     but.gotoA ndStop 2 ;                     but.en = 0;              }       }}                                       并设置按钮,上面代码我一次全部加载了信息。根据按钮传入的值来确定要浏览的区域位置,并将该区域移动到遮罩下进行显示。但是可能会想,使用上面的方法可以实现分页的效果。如果我有几百张,甚至上份的信息,如果一次加载进来岂不是要很久,而且也没有什么必要,这样既浪费了资源,也没有这么大了空间让你显示全部的内容,如果看完一个,只要单击下一个或者上一个,就能够观看遍所有的那不更加好吗?这确实是个好想法,veri good 为有这样的想法的朋友而高兴。那么何不来看看是怎么做出来的呢?这就关系到 FLA SH 中传送参数进行选择加载进行分页显示了实现的方法很多,    下面就告诉大家是第二种分页效果怎么做出来的当然。这只是其中的一种方法)其实实现也比较简单。根据单击的按钮传回的参数来加载选择的那一条或者几条信息。 原理是这样的设置一个带参的函数。只要在上面该该就行了设定 onLoad 时调用自己的函数解析 // 初始化对象。myXML = new XML ;myXML.ignoreWhit = true;myXML.onLoad = myParseXML;bookTag = new XML ;bookList = new Arrai ;descList = new Arrai ;count = 0;// 下面是自定义的用来解析储存书目信息的 XML 文件的函数function myParseXML {       bookTag = myXML.firstChild;       bookList = bookTag.childNodes;       // 读入第一本书的信息       readChild 0 ;}function readChild num {       // 读入一个 book 节点的所有信息       descList = bookList[num].childNodes;       // 分解 book 节点中的各子节点       for i=0; i<descList.length; i++ {              if descList.nodeName.toLowerCas == "class" {                     class = descList.firstChild.nodeValue;              }              if descList.nodeName.toLowerCas == "name" {                     name = descList.firstChild.nodeValue;              }              if descList.nodeName.toLowerCas == "author" {                     author = descList.firstChild.nodeValue;              }              if descList.nodeName.toLowerCas == "pub" {                     pub = descList.firstChild.nodeValue;              }              if descList.nodeName.toLowerCas == "pub" {                     img = descList.attributes.src;                     trace img ;                     _root.loader.loadMovi img ;              }       }       // 显示当前纪录的编号       no = num+1;}其中 readChild num 就是一个用来接受按钮参数的函数附件:

赞(0)
未经允许不得转载:福利吧|福利社|fuliba » FLASH加载XML数据方法

相关推荐

  • 暂无文章