83 lines
1.9 KiB
JavaScript
83 lines
1.9 KiB
JavaScript
define(function(require, exports, module) {
|
|
var logger = require("./logger");
|
|
|
|
|
|
var indexId = 0;
|
|
|
|
var getNextId = function(){
|
|
return indexId ++;
|
|
}
|
|
|
|
var eventClass = function(){
|
|
var eventArray = [];
|
|
this.addEvent = function(name,fn){
|
|
// logger.debug(['event util addEvent',name,fn]);
|
|
var evt = {
|
|
name:name,
|
|
fn:fn
|
|
};
|
|
eventArray.push(evt);
|
|
}
|
|
this.removeEvent = function(name,fn){
|
|
// logger.debug(['event util removeEvent',name,fn]);
|
|
var newArr = [];
|
|
for(var i in eventArray){
|
|
var e = eventArray[i];
|
|
if(e.name == name && e.fn == fn){
|
|
// logger.debug("event util removeEvent found:"+name);
|
|
}else{
|
|
newArr.push(e);
|
|
}
|
|
}
|
|
eventArray = newArr;
|
|
}
|
|
this.trigerEvent = function(name,data){
|
|
// logger.debug(['event util trigerEvent',name,data]);
|
|
for(var i in eventArray){
|
|
var e = eventArray[i];
|
|
if(e && e.name == name){
|
|
// logger.debug(["event util trigerEvent found:",name,data]);
|
|
e.fn.apply(window,[data]);
|
|
}
|
|
}
|
|
}
|
|
|
|
this.getEvents = function(){
|
|
return eventArray;
|
|
}
|
|
};
|
|
|
|
|
|
|
|
var eventInstances = {};
|
|
|
|
/**
|
|
* 创建一个时间处理器实例,传一个名字,如果name为空则实例一个,如果不为空则返回已有的实例或者新建一个
|
|
* @prama 处理器名字,
|
|
* @return 事件处理实例
|
|
*/
|
|
var careteEventInstance = function(name){
|
|
if(!name){
|
|
|
|
return new eventClass();
|
|
}
|
|
|
|
if(name in eventInstances){
|
|
|
|
return eventInstances[name];
|
|
}
|
|
var instance = new eventClass();
|
|
eventInstances[name] = instance;
|
|
|
|
|
|
return instance;
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
getInstance:careteEventInstance
|
|
};
|
|
|
|
window.eventUtil = module.exports;
|
|
|
|
}); |