正在加载...

一直都很忙,很忙……

今天终于花了一个小时重温了一下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,代码可能比较乱,大家批评!)

system.useCodepage = 1;
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]

还没找到您要的东西?Google试试看吧,
Google更注重原创、时效性好的文章:


本文相关评论: 一条都没有呢
[支持Ctrl+Enter]为了我们大家和家人的安全,留言请慎重!
声明:
1、本站仅与见过面的个人博客交换链接,见此文
2、留言时的头像是Gravatar提供的服务。如果您有兴趣并且有闲暇时间,可以看看这里的介绍