All checks were successful
Plugin Library CI / publish (00.BuildOriginality) (push) Successful in 13s
Plugin Library CI / publish (00.StaryEvo) (push) Successful in 17s
Plugin Library CI / publish (00.StaryEvoTools) (push) Successful in 35s
Plugin Library CI / publish (01.HybridCLR) (push) Successful in 15s
Plugin Library CI / publish (02.InformationSave) (push) Successful in 3s
Plugin Library CI / publish (03.YooAsset) (push) Successful in 33s
Plugin Library CI / publish (04.AudioCore) (push) Successful in 3s
Plugin Library CI / publish (05.TableTextConversion) (push) Successful in 5s
Plugin Library CI / publish (06.UIFarme) (push) Successful in 15s
Plugin Library CI / publish (07.RKTools) (push) Successful in 2s
Plugin Library CI / publish (08.UniTask) (push) Successful in 3s
Plugin Library CI / publish (09.CodeChecker) (push) Successful in 16s
Plugin Library CI / publish (10.StoryEditor) (push) Successful in 3s
Plugin Library CI / publish (10.XNode) (push) Successful in 3s
Plugin Library CI / publish (11.PointCloudTools) (push) Successful in 2s
Plugin Library CI / publish (12.WeixinMinigame) (push) Successful in 2m32s
59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
const events = [];
|
|
const EventsManager = {
|
|
/**
|
|
* 注册一个事件并持续监听
|
|
* @param eventName 事件名称
|
|
* @param callback 事件的触发函数
|
|
*/
|
|
on(eventName, callback) {
|
|
events.push({
|
|
eventName,
|
|
callback,
|
|
once: false,
|
|
});
|
|
},
|
|
/**
|
|
* 注册一个事件并最多只触发一次
|
|
* @param eventName 事件名称
|
|
* @param callback 事件的触发函数
|
|
*/
|
|
once(eventName, callback) {
|
|
events.push({
|
|
eventName,
|
|
callback,
|
|
once: true,
|
|
});
|
|
},
|
|
/**
|
|
* 卸载一个事件
|
|
* @param eventName 事件名称
|
|
* @param callback 事件句柄,若缺省将卸载所有同名事件
|
|
*/
|
|
off(eventName, callback) {
|
|
events.forEach((item, index) => {
|
|
if (item.eventName === eventName) {
|
|
if (!callback || item.callback === callback) {
|
|
events.splice(index, 1);
|
|
}
|
|
}
|
|
});
|
|
},
|
|
emit(eventName, ...args) {
|
|
const res = [];
|
|
const indexs = [];
|
|
events.forEach((item, index) => {
|
|
if (item.eventName === eventName) {
|
|
res.push(item.callback(...args));
|
|
if (item.once) {
|
|
indexs.unshift(index);
|
|
}
|
|
}
|
|
});
|
|
indexs.forEach((value) => {
|
|
events.splice(value, 1);
|
|
});
|
|
return res;
|
|
},
|
|
};
|
|
GameGlobal.events = EventsManager;
|