阅读内容 

完美的loading-吐血整理!

[日期:2007-10-20] 来源:  作者: [字体: ]
  


     现在,我们开始编制代码,你会发现它比你想象的要简单得多。

  1、新建一个Flash文档。

  2、找四张100*100像素的缩略图片。

  3、建立一个动态文本框,大概在300*300像素左右,使用12号字体,并使之现实边框,这样我们更好监测。别忘了设置它为多行的。

  4、建立一个100X100像素的矩形,转变为MC,然后将它移出场景。这时候,他已经出现在库中了。在库中,设置他的链接名为“img”,并使其“在第一帧导出”。其实这个矩形会在外部资源载入的时候被取代,现在只是为了调试方便。

  5、在刚才放置textBox文本框的层之上新建一层,这一层用于放置我们的代码,先写上
  stop();

  6、现在我们定义一个MCL的实例,此外定义一个基本对象,作为我们的侦听器:
  myMCL = new MovieClipLoader(); //define MovieClipLoader
  myListener = new Object(); //define listener

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

  记住,只有当读取完毕的时候,对MC部署事件任务才是安全可靠的!所以,在onLoadComplete被触发的时候才部署这个onPress事件给MC:
  myListener.onLoadComplete = function(targetMC){
  debug.text += "LOADING OF " + targetMC
  + " COMPLETE" + newline;
  targetMC.onPress = function() {
  debug.text += newline
  + "targetMC = " + targetMC._name;
  }
  }

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

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

  8、现在我们建立一个函数,它包含一个简单的循环来部署场景上的MC。并且及时地为每一个部署好的MC分配读取外埠资源的任务(loadClip方法),代码如下:
  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帮我们完成了所有工作!

  附:完整代码如下:
  stop();
  myMCL = new MovieClipLoader();
  myListener = new Object();
  myListener.onLoadComplete = function(targetMC)
  {
   targetMC.onPress = function ()
   {
   trace("pressed");
   }
  }

  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();

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

上一页12345678下一页  GO
阅读:
录入:blue1000

推荐 】 【 打印
相关新闻      
本文评论       全部评论
  你都吐血了 我收藏你   (火の· ,2008-04-09 )
发表评论
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款


点评: 字数
姓名:
Advertisement
内容查询


Advertisement