#12 fix Emitter类移除监听时是否有错

This commit is contained in:
yhh
2020-07-15 10:53:30 +08:00
parent 983c8fbc99
commit 7dffb4d94a
10 changed files with 48 additions and 8 deletions

View File

@@ -8,7 +8,7 @@ declare interface Array<T> {
findAll(predicate: Function): Array<T>;
contains(value: any): boolean;
removeAll(predicate: Function): void;
remove(element: any): boolean;
remove(element: T): boolean;
removeAt(index: any): void;
removeRange(index: any, count: any): void;
select(selector: Function): Array<T>;

View File

@@ -4883,7 +4883,9 @@ var Emitter = (function () {
list.push(new FuncPack(handler, context));
};
Emitter.prototype.removeObserver = function (eventType, handler) {
this._messageTable.get(eventType).remove(handler);
var messageData = this._messageTable.get(eventType);
var index = messageData.findIndex(function (data) { return data.func == handler; });
messageData.removeAt(index);
};
Emitter.prototype.emit = function (eventType, data) {
var list = this._messageTable.get(eventType);

File diff suppressed because one or more lines are too long

View File

@@ -45,6 +45,13 @@ class MainScene extends Scene {
return new MainScene();
}));
}, this);
Main.emitter.addObserver(CoreEmitterType.Update, this.handleFuncTest, this);
}
/** 测试Emitter */
private handleFuncTest(){
Main.emitter.removeObserver(CoreEmitterType.Update, this.handleFuncTest);
}
public breadthfirstTest() {