2007/03/03 | [原创][共享]类似跑秒器的类
类别(Flash及RIA) | 评论(0) | 阅读(215) | 发表于 20:01

本类可以让某方法以特定的时间间隔执行特定次数.这个类是非常有用的.

希望能和大家一起建立起一个比较有用且完善的共享AS包

/**************************************************
*
* 类似跑秒器的类
* Author 一溜烟
* Link http://ezzz.5dblog.com
* Date 2006-11-22
*
**************************************************/
/**************************************************
*
* 详细说明
* 本类让某方法以特定的时间间隔执行特定次数
*
**************************************************/
/**************************************************
*
* Example 例子
* 一下例子的代码是每3秒执行一次myfun并带了参数,一共执行5次
* ----------------------------------------
* import com.ezzz.StopWatch;
* var vw:StopWatch = new StopWatch();
* //设置运行间隔(单位:毫秒)
* vw.setCyc(3000);
* //设置运行次数(单位:次)
* vw.setNumber(5);
* //设置需要执行的方法名及他所需要的参数
* vw.run(myfun, 100);
* function myfun(num1:Number) {
*  trace("< 返回结果"+num1*2+" >");
* }
*
* ----------------------------------------
*
**************************************************/
class com.ezzz.StopWatch extends MovieClip {
 /**************************************************
 *
 * 声明变量
 *
 **************************************************/
 private var thisObj:Object;
 /**************************************************
 * 运行间隔
 **************************************************/
 private var num_Time:Number;
 /**************************************************
 * 运行次数
 **************************************************/
 private var num_Number:Number;
 /**************************************************
 * 间隔句柄ID
 **************************************************/
 private var intervalId:Number;
 /**************************************************
 *
 * 构造函数
 *
 **************************************************/
 public function StopWatch() {
  thisObj = new Object();
  thisObj = this;
  thisObj.num_Time = 10;
  thisObj.num_Number = 50;
  clearInterval(thisObj.intervalId);
 }
 /**************************************************
 *
 * 设置运行间隔
 * num1:Number 设置num_Time
 *
 **************************************************/
 public function setCyc(num1:Number):Void {
  thisObj.num_Time = num1;
 }
 /**************************************************
 *
 * 设置运行次数
 * num1:Number 设置num_Number
 *
 **************************************************/
 public function setNumber(num1:Number):Void {
  thisObj.num_Number = num1;
 }
 /**************************************************
 *
 * 强制关闭跑秒器
 *
 **************************************************/
 public function closeStopWatch():Void {
  thisObj.num_Number = -1;
  clearInterval(thisObj.intervalId);
 }
 /**************************************************
 *
 * 跑秒器接口
 * 隐含参数:arguments 包含一个方法和他的所有参数
 *
 **************************************************/
 private function setFun(arr1:Array):Void {
  if (thisObj.num_Number>0) {
   var fun1:Function;
   var args1:Array = new Array();
   for (var i:Number = 1; i<arr1.length; i++) {
    args1.push(arr1[i]);
   }
   fun1 = arr1[0];
   fun1.apply(null, args1);
  }
  thisObj.num_Number--;
  if (thisObj.num_Number<=0) {
   thisObj.closeStopWatch();
  }
 }
 /**************************************************
 *
 * 跑秒器主程序
 * 隐含参数:arguments 包含一个方法和他的所有参数
 *
 **************************************************/
 public function run() {
  var args1:Array = new Array();
  for (var i:Number = 0; i<arguments.length; i++) {
   args1.push(arguments[i]);
  }
  thisObj.intervalId = setInterval(thisObj, "setFun", thisObj.num_Time, args1);
 }
}

 压缩包下载

0

评论Comments