cthread.as

来自「flashget43的源代码 一个比较常用的下载程序」· AS 代码 · 共 62 行

AS
62
字号
_global.CThread = function() {
	this.intervalId = null;
	this.threadCallList = new Array();
	this.doInterrupt = false;
};

_global.CThread.prototype.TICK_TIME = 8000;

//PUBLIC METHODS.

_global.CThread.prototype.addCall = function(inObj, inFunctionName, inArg1, inArg2, inArg3) {
	var threadCall = new CThreadCall(inObj, inFunctionName, inArg1, inArg2, inArg3);
	this.threadCallList.push(threadCall);
	if (this.intervalId == null) {
		this.intervalId = setInterval(this.tick, 10, this);
	}
};

_global.CThread.prototype.insertCall = function(inObj, inFunctionName, inArg1, inArg2, inArg3) {
	var threadCall = new CThreadCall(inObj, inFunctionName, inArg1, inArg2, inArg3);
	this.threadCallList.splice(0, 0, threadCall);
	if (this.intervalId == null) {
		this.intervalId = setInterval(this.tick, 10, this);
	}
};

//tells currently running thread to imediately interrupt and wait until next interval call.
_global.CThread.prototype.interrupt = function() {
	this.doInterrupt = true;
};

//PRIVATE METHODS.

_global.CThread.prototype.tick = function(inThread) {
	if (inThread.threadCallList.length == 0) {
		clearInterval(inThread.intervalId);
		inThread.intervalId = null;
		return;
	}
	var tickStartTime = getTimer();
	while ((inThread.threadCallList.length > 0) && (getTimer() - tickStartTime < inThread.TICK_TIME)) {
		if (inThread.doInterrupt) {
			break;
		}
		var threadCall = inThread.threadCallList[0];
		inThread.threadCallList.splice(0, 1);
		//trace('CThread: tick: [' + (getTimer() - tickStartTime) + ' ms]: calling \'' + threadCall.functionName + '\'.');
		//var callStartTime = getTimer();
		threadCall.obj[threadCall.functionName](threadCall.arg1, threadCall.arg2, threadCall.arg3);
		//var callTime = getTimer() - callStartTime;
		/*
		if (callTime > 1.5 * inThread.TICK_TIME) {
			trace('CThread: tick: [' + callTime + ' ms]: calling \'' + threadCall.functionName + '\'.');
		}
		*/
	}
	inThread.doInterrupt = false;
	//trace('CThread: tick: [' + (getTimer() - tickStartTime) + ' ms]: time out.');
};

_global.thread = new CThread();

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?