本类可以让某方法以特定的时间间隔执行特定次数.这个类是非常有用的.
希望能和大家一起建立起一个比较有用且完善的共享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);
}
}
压缩包下载