用户名: 密码: 验证码:           网站地图 高级搜索 RSS订阅 收藏本站
Google
您的位置:首页>>图形设计>>Flash>>阅读资讯:Flash片头加载完美的loading的制作

Flash片头加载完美的loading的制作

[ 来源: | 阅读:次 | 更新日期:2007-10-5 22:48:17 | 评论 0 条 | 我要投稿 ]

7、接下来我们用侦听器来侦听onLoadComplete事件,该事件的作用上文已经提到了。我们现在把它交给listener对象,而不是MCL实例。当然,最终要把侦听器对象再交回MCL(以侦听其回调函数)的时候,得到的效果就是我们需要的效果了。

字串9

记住,只有当读取完毕的时候,对MC部署事件任务才是安全可靠的!所以,在onLoadComplete被触发的时候才部署这个onPress事件给MC:

字串9

myListener.onLoadComplete = function(targetMC){
 debug.text += "LOADING OF " + targetMC
 + " COMPLETE" + newline;
 targetMC.onPress = function() {
 debug.text += newline
 + "targetMC = " + targetMC._name;
 }
}
字串7

注:上述代码中有几行被人为打断,但这并不影响效果。 月落网

你也许已经注意到了,MC的实例名称在onLoadComplete被触发的时候是作为一个参数的身份传递给onLoadComplete的,这样我们控制这个MC就非常方便了。比如这里就可以用点击MC来检测事件是否被成功部署给MC。

字串9

8、现在我们建立一个函数,它包含一个简单的循环来部署场景上的MC。并且及时地为每一个部署好的MC分配读取外埠资源的任务(loadClip方法),代码如下:

www.yueluo.net

function initClips(){
 for (i=1; i<=4; i++){
 this.attachMovie("img", "img" + i, i);
 this["img"+i]._x = i*110;
 myMCL.loadClip("0" + i + ".jpg" ,
 this["img"+i]); //code wrapped
 }
}

月落

9、到这里基本上就完成了。现在我们剩下的工作就是注册侦听器并且按照需求调用相关函数、方法,反映到代码上就是以下两行:

月落

myMCL.addListener(myListener);
initClips();
月落网

注意这里的顺序,我们的侦听器对象在调用initClip()函数之前就被作用于MCL实例了。现在我们的MC的onPress事件可以顺利工作了,因为当图片被完全读入之后,事件才被分配过去。我们的代码也非常简洁。我们再也不用为了loading而去制作麻烦的循环了,MovieClipLoader帮我们完成了所有工作!

字串5

附:完整代码如下: 字串8

字串9

stop();
myMCL = new MovieClipLoader();
myListener = new Object();
myListener.onLoadComplete = function(targetMC)
{
  targetMC.onPress = function ()
  {
    trace("pressed");
  }
}

字串6

function initClips()
{
  for (i=1;i<=4;i++)
  {
    this.attachMovie("img","img"+i,i);
    this["img"+i]._x = i*110;
    myMCL.loadClip(url,this["img"+i]);
  }
}
myMCL.addListener(myListener);
initClips(); 字串8

  月落

到此为止,你应该相信MCL确实是一个不可多得的好东西了吧? 月落网

V2,也爱,也恨!这里介绍关于含有V2组件项目的loading问题 月落网

V2组件自面世以来就颇受争议,大体概括如下:

月落

优点: 字串9

1、界面比V1组件更加美观、统一,人机交互模式更加完善
2、均采用面向对象脚本部署 yueluo.net

缺点: 字串8

体积笨重,开发一些只用到一两个组件的小应用程序时很尴尬。

月落网

消息机制方面使用EventDispather的消息广播机制,取代原有的AsBroadcast机制。使得刚出来的时候很多人根本不会用。

字串6

这里就不讨论更多了,先说loading。含有大量v2组件的产品要想见人肯定是不能不作loading的,比如aw's blog左边的那个blog小贴士。然而每次在loading的时候似乎都会遇到麻烦。那就是笨重的体积全部被放到第一帧导出了,这样导致对一些300k以内的,含有v2组件的SWF文件进行远程载入的loading效果变得捉襟见肘。 字串5

解决的办法也不是没有,简单概括为三个步骤:

字串8

一、去掉“Export in first frame”

月落

Flash片头加载完美的loading的制作 字串9

二、在发布的时候设置一下“Export frame for classes”,这一点非常重要!

字串5

Flash片头加载完美的loading的制作

月落

三、对于外埠读取的含有V2的swf文件,将容器mc进行如下设置:

月落网

loader_mc._lockroot = true; 字串5

好了,现在放心享受精彩而笨重的V2组件吧~! 字串7

  yueluo.net

loader_mc.onEnterFrame = function ()
{
  var getTar:MovieClip = this._parent;
  var p = getTar.getBytesLoaded()/getTar.getBytesTotal();
  trace(p);
  if(p==1)
  {
    this.onEnterFrame = null;
    gotoAndPlay(someFrame); // 开始播放
  }

月落网

} www.yueluo.net


共3页: 上一页 [1] [2] 3 下一页
Tags:flash,as,loading
责任编辑:
您的评论
用户名:新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为