- 浏览: 1045472 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (538)
- 奇文共赏 (36)
- spring (13)
- hibernate (10)
- AOP/Aspectj (9)
- spring security (7)
- lucence (5)
- compass (3)
- jbmp (2)
- jboss rule(drools) (0)
- birt (1)
- jasper (1)
- cxf (3)
- flex (98)
- webgis (6)
- 设计模式 (1)
- 代码重构 (2)
- log4j (1)
- tomcat (9)
- 神品音乐 (1)
- 工作计划 (2)
- appfuse (1)
- svn (4)
- 寻章摘句 (3)
- eclipse (10)
- arcgis api for flex (1)
- 算法 (5)
- opengis-cs (1)
- bug心得 (13)
- 图标 (1)
- software&key (14)
- java (17)
- 搞笑视频 (13)
- sqlserver (9)
- postgresql (1)
- postgis (0)
- geoserver (5)
- 日子 (50)
- 水晶报表 (1)
- 绝对电影 (3)
- Alternativa3D (1)
- 酷站大全 (10)
- c++ (5)
- oracle (17)
- oracle spatial (25)
- flashbuilder4 (3)
- TweenLite (1)
- DailyBuild (6)
- 华山论贱 (5)
- 系统性能 (5)
- 经典古文 (6)
- SOA/SCA/OSGI (6)
- jira (2)
- Hadoop生态圈(hadoop/hbase/pig/hive/zookeeper) (37)
- 风水 (1)
- linux操作基础 (17)
- 经济 (4)
- 茶 (3)
- JUnit (1)
- C# dotNet (1)
- netbeans (1)
- Java2D (1)
- QT4 (1)
- google Test/Mock/AutoTest (3)
- maven (1)
- 3d/OSG (1)
- Eclipse RCP (3)
- CUDA (1)
- Access control (0)
- http://linux.chinaunix.net/techdoc/beginner/2008/01/29/977725.shtml (1)
- redis (1)
最新评论
-
dove19900520:
朋友,你确定你的标题跟文章内容对应???
tomcat控制浏览器不缓存 -
wussrc:
我只想说牛逼,就我接触过的那点云计算的东西,仔细想想还真是这么 ...
别样解释云计算,太TM天才跨界了 -
hw_imxy:
endpoint="/Hello/messagebr ...
flex+java代码分两个工程 -
gaohejie:
rsrsdgrfdh坎坎坷坷
Flex 与 Spring 集成 -
李涤尘:
谢谢。不过说得有点太罗嗦了。
Oracle数据库数据的导入及导出(转)
http://www.flashempire.com/school/tutorview.php?id=281
简介:
在网上许多XML的解释数据都涉及到在FLASH不断地从一个XML文档中读取节点树来释放数据。这种做法有两个不足的地方:速度和可读性。本文介绍了一种不是新的,但是,更可用的方法……
原文Better XML Parsing
翻译如下:
在网上许多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");
上面的代码解释了我们的XML文件并创建了一个对组对象。如果在这之前你从来没有处理过XML数据理解这段代码是有点困难的。当解释完成了以后,如果我们要访问第一个轨道的mp3文件的地址我们会用“playlist_arr[0].location”,这里就会得到他的正确的地址。而对我们来说,我们可以把这个做得更好……
上面那段代码,在我的机子上,用了5毫秒去解除。这里并不怎么样,但不要忘了我们只是解释了两个轨道而已。
下面是一个更好的释放相同数据的方法,而不用依靠循环地读取子节点:
playlist_arr = new Array();
playlist_xml = new XML();
playlist_xml.ignoreWhite = true;
playlist_xml.onLoad = function(success) {
if (success) {
var startTime = getTimer();
var track_xml = playlist_xml.firstChild.firstChild;
while (track_xml != null) {
//add the track data to our playlist!
playlist_arr.push(getTrackData(track_xml));
track_xml = track_xml.nextSibling;
}
trace("Total parse time: " + (getTimer()-startTime));
} else {
trace("Error loading playlist.");
}
delete playlist_xml;
}
function getTrackData(track_xml) {
var trackData = new Object();
var data_xml = new XML();
data_xml = track_xml.firstChild;
while (data_xml != null) {
trackData[data_xml.nodeName] = data_xml.firstChild.nodeValue;
data_xml = data_xml.nextSibling;
}
return trackData;
}
playlist_xml.load("playlist.xml");
上面这个方法,我们可以得到相同的结果,但是却快了一点,可读性高了一点。在我的机子上只用了2毫秒来解释这两条轨道信息并装载到playlist数组。
5毫秒和2毫秒可能差别不大……如果我使到这个播放列表有20条轨道时,第一种处理方法用了113毫秒,而第二种方法则只用了20毫秒。是不是有觉得有点不一样?
在这个例子中我给代码加了注释。我们最主要就是理解XML对象的onload事件。注意到我在第二种方法通过建立一个getTrackData函数使代码更可读了吗?这里面获得一个节点对象作为参数并返回一个代表着轨道信息的对象。
不用在节点中频繁地读取每一个元素,我在这里只用了两个XML在FLASH中的属性,firstChild和nextSlibling。即首节点和下一个节点或元素。在循环开始之前,我去掉了所有的东西,只把首点节点作为一个XML值(在例子中为track_xml)。然后,我们的循环是简单:当有节点的时后,我们释放信息。在循环的结尾,我们已得到了数据,并使XML值跳到下一个节点。当下一个节点的值回值为空时,表示没有信息去处理,我们退出循环。
现在你已看到了一个截然不同的XML对象的解释方法。不用依靠读取子节点,我们利用nextSibling的优点来提高XML解释的速度和可读性。你们许多人也许已用过这种方法,但我想在这里写一下,因为这种方法并不是每个人都知道的。
简介:
在网上许多XML的解释数据都涉及到在FLASH不断地从一个XML文档中读取节点树来释放数据。这种做法有两个不足的地方:速度和可读性。本文介绍了一种不是新的,但是,更可用的方法……
原文Better XML Parsing
翻译如下:
在网上许多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");
上面的代码解释了我们的XML文件并创建了一个对组对象。如果在这之前你从来没有处理过XML数据理解这段代码是有点困难的。当解释完成了以后,如果我们要访问第一个轨道的mp3文件的地址我们会用“playlist_arr[0].location”,这里就会得到他的正确的地址。而对我们来说,我们可以把这个做得更好……
上面那段代码,在我的机子上,用了5毫秒去解除。这里并不怎么样,但不要忘了我们只是解释了两个轨道而已。
下面是一个更好的释放相同数据的方法,而不用依靠循环地读取子节点:
playlist_arr = new Array();
playlist_xml = new XML();
playlist_xml.ignoreWhite = true;
playlist_xml.onLoad = function(success) {
if (success) {
var startTime = getTimer();
var track_xml = playlist_xml.firstChild.firstChild;
while (track_xml != null) {
//add the track data to our playlist!
playlist_arr.push(getTrackData(track_xml));
track_xml = track_xml.nextSibling;
}
trace("Total parse time: " + (getTimer()-startTime));
} else {
trace("Error loading playlist.");
}
delete playlist_xml;
}
function getTrackData(track_xml) {
var trackData = new Object();
var data_xml = new XML();
data_xml = track_xml.firstChild;
while (data_xml != null) {
trackData[data_xml.nodeName] = data_xml.firstChild.nodeValue;
data_xml = data_xml.nextSibling;
}
return trackData;
}
playlist_xml.load("playlist.xml");
上面这个方法,我们可以得到相同的结果,但是却快了一点,可读性高了一点。在我的机子上只用了2毫秒来解释这两条轨道信息并装载到playlist数组。
5毫秒和2毫秒可能差别不大……如果我使到这个播放列表有20条轨道时,第一种处理方法用了113毫秒,而第二种方法则只用了20毫秒。是不是有觉得有点不一样?
在这个例子中我给代码加了注释。我们最主要就是理解XML对象的onload事件。注意到我在第二种方法通过建立一个getTrackData函数使代码更可读了吗?这里面获得一个节点对象作为参数并返回一个代表着轨道信息的对象。
不用在节点中频繁地读取每一个元素,我在这里只用了两个XML在FLASH中的属性,firstChild和nextSlibling。即首节点和下一个节点或元素。在循环开始之前,我去掉了所有的东西,只把首点节点作为一个XML值(在例子中为track_xml)。然后,我们的循环是简单:当有节点的时后,我们释放信息。在循环的结尾,我们已得到了数据,并使XML值跳到下一个节点。当下一个节点的值回值为空时,表示没有信息去处理,我们退出循环。
现在你已看到了一个截然不同的XML对象的解释方法。不用依靠读取子节点,我们利用nextSibling的优点来提高XML解释的速度和可读性。你们许多人也许已用过这种方法,但我想在这里写一下,因为这种方法并不是每个人都知道的。
发表评论
-
ActionScript 3.0 性能优化小知识
2010-07-30 14:12 1032http://xinsync.xju.edu.cn/in ... -
Flex企业级UI权限控制
2010-07-28 16:14 1302http://www.pin5i.com/showtopic- ... -
flex4中PopUpManager在module中有问题
2010-06-24 11:10 3142flex4中module加载module后flex4中 a ... -
Flex 开发: 类的反射
2010-06-24 10:56 1269http://www.ibm.com/developerwor ... -
Problems with ByteArray.writeObject()
2010-05-19 21:47 1725http://www.actionscript.org/for ... -
利用 E4X解决 XML 处理的性能问题
2010-05-19 21:11 1752http://www.blogjava.net/rosen/a ... -
正在安装的adobe flash player版本不是最新的版本
2010-04-22 09:56 2457打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\ ... -
AS3 优化 之 FOR内循环
2010-02-10 15:39 1564写游戏只要有思路,就能实现,但这也只是从功能角度出发,能不能有 ... -
flex模块切换时导致对象不正确序列化的解决办法
2009-12-02 09:08 1628http://lkfnn.iteye.com/blog/506 ... -
漂亮的登陆
2009-11-19 16:32 1160http://dougmccune.com/360Flex_A ... -
Download all 177 Flash Effects Source Files .fla
2009-11-13 09:27 1223http://www.jeffjoneslive.com/Fl ... -
flex如何接受其他页面Post过来的数据
2009-10-10 11:15 2558问题描述: 有个程序需要调用我的flex页面,需要给我传 ... -
Change font size in the whole app with Ctrl+/-
2009-10-09 10:06 1202http://feedproxy.google.com/~r/ ... -
flex delete关键词和类成员
2009-10-09 09:01 1409flash中delete关键词用来移除定义的变量,并不能从内存 ... -
Flex HTTPService如何给后台传递参数
2009-10-09 08:56 1525http://blog.csdn.net/joeyshi/ar ... -
FLEX Builder compiler arguments 的设置
2009-09-28 08:20 1656http://flash.9ria.com/thread-18 ... -
12 Best Adobe AIR Applications for Web Designers
2009-09-25 08:20 107812 Best Adobe AIR Applications ... -
做网页如何改变IE地址栏的显示IE图标
2009-09-23 16:55 2701这个问题的解决其实在flex之外 修改index.templa ... -
Flex设置html(页面标题)title问题
2009-09-23 15:31 3287如果你是一个整体系统用了同一个标题:可以修改模板页index. ... -
flex中文问题,访问中文路径问题
2009-09-23 14:36 1202本文最先发表在本人个 ...
相关推荐
Flash,另一方面,是Adobe开发的一种多媒体平台,用于创建动画、交互式内容以及富互联网应用程序。在过去的几年里,Flash以其强大的图形处理能力和互动性,在Web上广泛应用,尤其是在创建动态网页和在线游戏方面。 ...
3D轮播是一种视觉效果,它通过模拟立体空间中的图片旋转,让用户感觉图片在多个维度上移动,从而增强浏览的趣味性和沉浸感。这种效果通常通过编程技术和图形渲染来实现。 接下来,我们将详细探讨如何利用Flash和XML...
JavaScript是另一种关键技术,它负责在客户端处理用户交互。结合Flash和XML,JavaScript可以监听用户操作,如点击按钮或滚动条,然后触发相应的Flash函数,更新显示的图片。此外,JavaScript还可以实现一些浏览器端...
XML与Flash结合实现的翻书效果是一种常见的网页互动设计技术,尤其在电子杂志、在线图书展示等领域广泛应用。这种技术利用了XML(可扩展标记语言)的结构化数据存储能力和Flash的动态内容展示功能,为用户提供了一种...
JavaScript焦点图是另一种常见的网页动态效果,它使用纯JavaScript或库如jQuery来实现图片轮播,无需依赖Flash,适用于对Flash不支持或性能要求更高的环境。 【子文件“js42”】这个文件名可能是某种脚本或代码文件...
2. **BinaryFormatter**: 另一种序列化工具是`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`。它将对象状态保存为二进制流,通常用于本地存储或高效网络传输。但与Flash交互时,由于二进制格式...
MXML是一种声明式语言,允许开发者以XML格式定义UI组件和布局。它简化了界面设计,使得非程序员也能参与设计过程。另一方面,ActionScript则用于处理程序逻辑和与用户的交互。通过结合使用这两种语言,开发者可以...
4. 背景缩放相册和平铺式相册:可能是指两种不同的布局方式,一种是背景按比例缩放以适应图片,另一种是图片以平铺形式展示。 三、制作流程 1. 设计界面:在Flash Professional中创建新项目,设计相册的基本布局,...
Flash Remoting是Flash与服务器通信的另一种常见方式,它通过NetConnection对象和NetStream对象来实现。NetConnection负责建立和管理到服务器的连接,NetStream则用于实际的数据传输。Flash Remoting支持AMF,这是一...
- 如果Flash内容是在另一个域中,可能需要处理跨域安全策略文件。 通过以上步骤,我们可以在Flex和Flash之间实现双向通信,充分利用两者的优势,创造出更具交互性和动态性的应用程序。在实际开发中,可以根据具体...
Flash是一种基于矢量图形的多媒体平台,它允许开发人员创建动画、游戏、应用程序和广告,这些内容可以在浏览器中通过Flash Player插件播放。它的优势在于能够提供丰富的视觉体验,包括复杂的动画、声音和视频集成。...
ActionScript 2.0是Adobe Flash Professional中使用的一种编程语言,用于创建交互式动画、游戏以及富互联网应用程序(RIA)。这个教程"学_Flash 中的 ActionScript 2.0"显然是为了帮助初学者掌握这种强大的脚本语言...
XML是一种通用的数据交换格式,通过它可以方便地存储和传输复杂的数据结构。在工作流管理中,导入XML数据允许用户将已有的流程定义快速导入系统,减少了手动输入的时间,同时也方便了流程的备份和恢复。这一功能对于...
《超级经典Flash相册》是一种将JavaScript与Flash技术结合运用,以实现动态、交互式的相册展示方式。这种相册设计充分利用了Flash的动画效果和JavaScript的灵活性,为用户提供了一种既美观又实用的图片浏览体验。...
另一方面,对于历史项目维护或复古风格的网页设计,Flash技术仍有其独特魅力。 总的来说,"简洁型FLASH新闻系统源码"是一份揭示了Flash AS3编程技术的实践案例,通过深入研究,我们可以了解到Flash在动态内容展示...
Flash作为一种曾经广泛应用于网页交互设计的技术,因其强大的图形处理能力和实时交互性,在在线聊天系统开发中占据了一席之地。本篇文章将深入探讨Flash版在线聊天系统的源代码,解析其核心概念、实现原理以及相关...
3. **柱状图**:柱状图是另一种常用的可视化工具,用于比较不同类别的数据。在Open Flash Chart 2中,你可以选择垂直或水平柱状图,并调整柱宽、颜色、透明度。还可以添加条形图的标签、值以及背景渐变,以增强图表...
PureMVC 是另一种流行于Flex社区的开源框架,它特别强调分层解耦的思想。PureMVC 框架将应用程序划分为三个主要部分:Model(数据模型)、View(视图)和Controller(控制器)。这种架构使得各个组件之间的耦合度...
Flash是一种用于创建交互式动画、图形和应用程序的工具,它曾广泛应用于网页设计中,特别是对于创建动态和引人入胜的用户体验。在本案例中,“Flash”被用于创建留言板的用户界面,包括输入框、按钮和可能的动画效果...
在本文中,我们将探讨如何开发一个Flash广告播放器,这是一种用于管理和展示网站上SWF格式的Flash广告的工具。Flash广告播放器允许网站管理员更加有序地控制广告的显示,并且可以根据需要轻松更换广告内容。我们将...