新增allTweensWithTargetEntity与clearAllCoroutines方法

This commit is contained in:
YHH
2022-07-09 11:24:32 +08:00
parent dde04d514e
commit 34f0c4ac2d
9 changed files with 115 additions and 3 deletions

View File

@@ -3,7 +3,7 @@ module es {
* CoroutineManager用于隐藏Coroutine所需数据的内部类
*/
export class CoroutineImpl implements ICoroutine, IPoolable {
public enumerator: any;
public enumerator: Generator;
/**
* 每当产生一个延迟它就会被添加到跟踪延迟的waitTimer中
@@ -46,6 +46,22 @@ module es {
public _unblockedCoroutines: CoroutineImpl[] = [];
public _shouldRunNextFrame: CoroutineImpl[] = [];
/**
* 立即停止并清除所有协程
*/
public clearAllCoroutines() {
for (let i = 0; i < this._unblockedCoroutines.length; i ++) {
Pool.free(CoroutineImpl, this._unblockedCoroutines[i]);
}
for (let i = 0; i < this._shouldRunNextFrame.length; i ++) {
Pool.free(CoroutineImpl, this._shouldRunNextFrame[i]);
}
this._unblockedCoroutines.length = 0;
this._shouldRunNextFrame.length = 0;
}
/**
* 将IEnumerator添加到CoroutineManager中
* Coroutine在每一帧调用Update之前被执行
@@ -144,6 +160,11 @@ module es {
return true;
}
if (typeof chain.value == 'function') {
coroutine.waitForCoroutine = this.startCoroutine(chain.value);
return true;
}
if (chain.value instanceof CoroutineImpl) {
coroutine.waitForCoroutine = chain.value;
return true;