一直都很忙,很忙……
今天终于花了一个小时重温了一下XML
读取XML的过程是很简单的。但是如何让这个过程的外在显示过渡更加流畅呢?这里又忍不住要提到我所认为“完美”的平滑过渡技术。
很早以前,我曾经在actionscript.org上看到一篇SmoothLoading 的文章,我觉得这篇文章给我了很大的帮助,这篇文章让我进一步追求一种平滑的完美。在flash中,我更加愿意理解为一种“过渡”,比如,从一个子栏目跳转到另一个子栏目的时候,并不是要在用户点下鼠标的那一瞬间就马上改头换面,而是要经过一段动画(当然也不能太冗长)才达到新的位置,这段动画可以是p2p的(也就是两种状态间的直接转换),也可以是通过中间状态的转换。
附:这里的p2p并不是平时说的那种BT软件中所说的peertopeer。
平滑状态转换的简单例子:
p2p的:
这里还可以看看给客户的一个例子
http://www.meibangedu.com.cn/ 的flash 版。也是p2p型的
从中间状态过渡的比较简单就不举了。
关于loading也是一个道理,我个人所有作品的loading,也基本不会让它在已经100%加载到swf的情况下直接进入动画。
今天XML的加载,我同样要用到这个smoothloading。
这里共享一下我的代码(长期没有接触flash,代码可能比较乱,大家批评!)
loader.onLoad = function() {
this._width = 0;
//进度条置零
};
var picXML:XML = new XML();
picXML.ignoreWhite = true;
picXML.load("pic.xml"); //读取数据源
this.createEmptyMovieClip("tracer", 1);
tracer.onEnterFrame = function() {
picGL = 100*picXML.getBytesLoaded()/picXML.getBytesTotal();
//监控进度
};
picXML.onLoad = function(success) {
if (success) {
//获取XML触发
loader.onEnterFrame = function() {
//
this._width += (this._parent.picGL-this._width)/2;
_root.per = this._width;
var logA:Boolean = (this._parent.picGL == 100);
if (logA && this._width>99) {
_root.hintText.text = "Loaded";
} else {
_root.hintText.text = "Receiving data";
}
//
};
parseXML(picXML);
} else {
_root.hintText.text = "Connecting server…";
}
};
function parseXML(XMLs) {
var XMLs:XML;
//trace(XMLs);
//分析XML,略
}
//关于onEnterFrame和tracer的killing我没有交代,这个也不难处理。当然这个用起来的时候是一定要交待一下的:)
[/code]
本文来自:http://www.awflasher.com/blog/archives/24
Google更注重原创、时效性好的文章:
| 相关阅读 | 本月十大 |



