信息网络中心(最新版)(在运行)
设为首页  |  加入收藏
 西大主站  网站首页  关于中心  技术支持  用户服务  教育技术  技术研究  工会活动  培训信息  下载中心  数字化校园 
当前位置: 网站首页>>教育技术>>教育技术>>正文

AS 3.0-时间事件
2011-10-14 00:00   BluE的博客 审核人:

      AS3.0完全兼容了AS2.0的时间函数,所以用习惯了AS2.0的朋友不用担心会不习惯。这些时间函数包括:getTimer、clearInterval、setTimeout、clearTimeout、setInterval。wqN广西大学网络中心

      下面我想介绍下AS3.0新推出的控制时间的类,就是Timer类(flash.utils.Timer)。 这个类的应用还是比较简单的,我们看下面一段代码:wqN广西大学网络中心

       var t:Timer = new Timer(1000, 5);//定义一个间隔1000毫秒,运行5次的Timer。如果没有参数5就是无限次调用直到运行stop()方法;wqN广西大学网络中心
      function onTick(event:TimerEvent) {wqN广西大学网络中心
            if (event.target.currentCount == 3) {wqN广西大学网络中心
                  t.stop();wqN广西大学网络中心
            }wqN广西大学网络中心
            trace("onTick");wqN广西大学网络中心
       }wqN广西大学网络中心
      t.addEventListener(TimerEvent.TIMER, onTick);//每隔1000毫秒调用一次wqN广西大学网络中心
      function onFinish(event:TimerEvent) {wqN广西大学网络中心
            trace("onFinish");wqN广西大学网络中心
      }wqN广西大学网络中心
      t.addEventListener(TimerEvent.TIMER_COMPLETE, onFinish);//运行结束后调用wqN广西大学网络中心
      t.start();//开始计时wqN广西大学网络中心

      结构相对还是比较清楚的,我这里做几点说明:1. Timer类的事件只有这两种TIMER和TIMER_COMPLETE(继承的不算,下同)。2. 在函数体内,要调用Timer类的方法或属性,需要用event.target(指向Timer实例),而不像其他事件直接用event就可以,这个是有区别的(参见本例onTick函数体)。wqN广西大学网络中心

       但我们从代码的习惯性上面来比较:1. setInterval:如果执行了setInterval,而没有执行clearInterval,那么该侦听器对象永远不会被回收。但是这个错误一般不会犯,因为不终止的话,setInterval会一直执行下去。2. setTimeout:如果执行了setTimeout,而没有执行clearTimeout,那么该侦听器对象永远不会被回收!如果在一个应用程序中大量使用setTimeout而不清理,倒确实会对性能产生影响。3. Timer类再两种情况下会正常回收侦听器:(1) 定义一个有限执行次数的Timer,执行次数到了之后正常回收。(2) 使用Timer.stop();方法,立即回收侦听器。wqN广西大学网络中心

关闭窗口


广西大学版权所有:
Copy@2014
制作维护:广西大学信息网络中心 E_mail:webmaster@gxu.edu.cn