#12 fix Emitter类移除监听时是否有错
This commit is contained in:
2
demo/libs/framework/framework.d.ts
vendored
2
demo/libs/framework/framework.d.ts
vendored
@@ -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>;
|
||||
|
||||
@@ -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);
|
||||
|
||||
2
demo/libs/framework/framework.min.js
vendored
2
demo/libs/framework/framework.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user