当前页面位置: » 丰搜网 » 文档中心 » 详细内容
让flash更好的利用xml
英文原文地址: http://www.darronschall.com/web log/archives/000065.cfm
在网上许多xml 的解释数据都涉及到在flash 不断地从一个xml 文档中读取节点树来释放数据。这种做法有两个不足的地方:速度和可读性。下面我将教大家一种不是新的,但是,更可用的方法。 首先,所谓分析xml 就是从一个xml 文档中释放数据,并创建一个内部的数据代表。我们通常的做法是加载一个xml 文件,并创建一个数组对象来装载里面的数据以便为我们在flash 中使用。 我们解释xml 文档并把数据装载到数组对象中的原因是多方面的。我们可以节省我们的内存空间,因为xml 对象在flash 是有一点巨大,而且当我们需要用到已加载的xml 文件的数据时,我们可以提高数据的访问速度。另外,用playlist_array[1]来表示数组总比在xml 文档中找数据来得方便一点。 下面我们开始吧,我们先看一个在xml 文件,这个文件是做一个flash 的mp3播放器时得用到的。下面是我们的文件,名为playlist.xml :
<xml version="1.0"?> <playlist> <track> <artist><![cdata[some band #1]]></artist> <name><![cdata[some band's song]]></name> <location><![cdata[some_band_1.mp3]]></location> </track> <track> <artist><![cdata[some band #2]]></artist> <name><![cdata[some band #2's song]]></name> <location><![cdata[some_band_2.mp3]]></location> </track> </playlist>
在上面的xml 文件中,我们声名了一个带有两个轨道(track)的播放列表(playlist),每个轨道(track)里有一个歌手名(artist name),歌名(song name),还有mp3文件的地址(location),这些我们都可以动态地载入。下面是我们经常用到的xml 的解析方法:
playlist_arr = new array(); playlist_xml = new xml (); playlist_xml .ignorewhite = true; playlist_xml .onload = function(success) { if (success) { var starttime = gettimer(); var tracks_xml = playlist_xml .firstchild; for (var i = 0; i < tracks_xml .childnodes.length; i++) { var trackdata = new object(); for (var j = 0; j < tracks_xml .childnodes[i].childnodes.length; j++) { trackdata[tracks_xml .childnodes[i].childnodes[j].nodename] = tracks_xml .childnodes[i].childnodes[j].firstchild.nodevalue; } playlist_arr.push(trackdata); } trace("total parse time: " + (gettimer()-starttime)); } else { trace("error loading playlist."); } // clean up after ourselves delete playlist_xml ; } playlist_xml .load("playlist.xml ");
出处:闪客帝国 责任编辑:地狱天堂
上一页 下一页 让flash 更好的利用xml
◎进入论坛flash 专栏版块参加讨论
flash 酷站猎手 中文id3乱码问题mx解决方案 用as2解决中文id3的乱码 flash 常用效果-移动模糊效果 flash mx 2005 制作环境预览
保持清晰的文档结构 月亮图腾教程ⅴ—最后一战 x-sapce使用系列教程 x-space安装系列教程 抽线以及虚线画法简明教程 创新设计 百万格子大楼 discuz!转换系列教程 世界杯足球的32个变种 易上手简单图层样式扣图 一封写给mm学习linux 的信
保持清晰的文档结构 月亮图腾教程ⅴ—最后一战 x-sapce使用系列教程 x-space安装系列教程 抽线以及虚线画法简明教程 discuz!转换系列教程 易上手简单图层样式扣图 十分钟学会 xajax css 菜单举一反三 利用照片制作版画简明教程
>> 分页 首页 前页 后页 尾页 页次:1 /2 页 1 个记录/页 转到 javascript :location.href=this.options[selectedindex].value name=page>asp " selected>1asp ">2 页 共2 个记录 蓝色理想版权申明 :除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。
转载要求 :转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。
特别注意 :本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
本文总共有 11 条评论,现在显示最新的 5 条。 暂时没有人参于评分
蓝色 publish at 2006-3-29 16:26:00 文章写的太老,player的升级了好几个版了。所以有些问题可能早就解决了。jerry123 publish at 2006-3-28 15:45:10 看这篇文章是一篇译文,我认为应当是有比较高的可信度的,我一向愿意相信英文原版资料,但是我的实验让我很惊讶,不知道是不是我搞错,按照文章中的2段代码,在我的机器上,分别按ctrl+enter测试 影片,然后在player中设置模拟下载多次测试 2段代码,他们的执行时间全在0或者1毫秒,根本难分高下! 然后我把var starttime = gettimer();这句代码放到所有代码的最上面,希望看看所有代码执行所需要时间的对比,同样是多次测试 2段代码,用第一段代码时间在27-111毫秒不等,第二段则在45-140毫秒不等,照这个结果来看第一段代码在执行时间上更优异,而且我破解过一些外国人写的as,这中用双for循环给数组赋值的写法很多见,并没有有利的证据证明他们是垃圾代码! 另外即使按文中说的,代码在某段功能上有速度提升,全代码测试 的结果还是第一段优异,总的来说第一段具有更少的代码行数,第二段中while()同样是在循环,而且他还调用了一个gettrackdata()的自定义函数,不知道是文章也错了,还是我测试 的不对.......希望有高人出来解释清楚!218.60.19.2 publish at 2004-5-6 14:32:37 不错呀202.103.234.43 publish at 2004-4-2 10:28:19 是什么呀?是xml 218.72.26.239 publish at 2004-4-3 9:57:16 还有好的高招吗?》查看全部评论
关于站点 免责声明 联系站长 版权隐私 友情链接 网站地图 京icp备05002321号 ©1999-2006 blueidea .com. 版权所有