Merge pull request #612 from universe-st/PR-Branch-ph
新增lib.handler,直接为事件名添加handler机制
This commit is contained in:
commit
8e23927898
47
game/game.js
47
game/game.js
|
@ -400,6 +400,52 @@
|
||||||
return method;
|
return method;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
handler:{
|
||||||
|
_handlers:{},
|
||||||
|
getHandler:function(name,type){
|
||||||
|
if(!type)type = this.getDefaultHandlerType(name);
|
||||||
|
if(!this._handlers[name])return null;
|
||||||
|
if(!this._handlers[name][type])return null;
|
||||||
|
return this._handlers[name][type];
|
||||||
|
},
|
||||||
|
ensureHandlerList:function(name,type){
|
||||||
|
if(!type)type = this.getDefaultHandlerType(name);
|
||||||
|
if(!this._handlers[name])this._handlers[name] = {};
|
||||||
|
if(!this._handlers[name][type])this._handlers[name][type] = [];
|
||||||
|
return this._handlers[name][type];
|
||||||
|
},
|
||||||
|
removeHandler:function(name,type,func){
|
||||||
|
var list = this.ensureHandlerList(name,type);
|
||||||
|
list.remove(func);
|
||||||
|
if(list.length == 0){
|
||||||
|
delete this._handlers[name][type];
|
||||||
|
if(Object.keys(this._handlers[name]) == 0){
|
||||||
|
delete this._handlers[name];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
pushHandler:function(name,type){
|
||||||
|
let functions = (typeof type == 'string' ? arguments.slice(2):arguments.slice(1));
|
||||||
|
type = (typeof type == 'string'?type:this.getDefaultHandlerType(name));
|
||||||
|
this.ensureHandlerList(name,type).addArray(functions);
|
||||||
|
},
|
||||||
|
getDefaultHandlerType:(name)=>{
|
||||||
|
return `on${name[0].toUpperCase()}${name.slice(1)}`;
|
||||||
|
},
|
||||||
|
addHandlerToEvent:function(event){
|
||||||
|
if(typeof event.name == 'string'){
|
||||||
|
let handlerMap = this._handlers[event.name];
|
||||||
|
if(handlerMap){
|
||||||
|
Object.keys(handlerMap).forEach((key)=>{
|
||||||
|
let list = handlerMap[key];
|
||||||
|
if(list){
|
||||||
|
list.forEach(handler=>event.pushHandler(key,handler));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
objectURL:new Map(),
|
objectURL:new Map(),
|
||||||
hookmap:{},
|
hookmap:{},
|
||||||
imported:{},
|
imported:{},
|
||||||
|
@ -30969,6 +31015,7 @@
|
||||||
const type=`onNext${name[0].toUpperCase()}${name.slice(1)}`;
|
const type=`onNext${name[0].toUpperCase()}${name.slice(1)}`;
|
||||||
if(gameEvent.hasHandler(type)) this.pushHandler(...gameEvent.getHandler(type));
|
if(gameEvent.hasHandler(type)) this.pushHandler(...gameEvent.getHandler(type));
|
||||||
}
|
}
|
||||||
|
lib.handler.addHandlerToEvent(this);
|
||||||
}
|
}
|
||||||
this.step=0;
|
this.step=0;
|
||||||
this.finished=false;
|
this.finished=false;
|
||||||
|
|
Loading…
Reference in New Issue