import { EventVo } from '../vo/EventVo'; import { ModuleEvent } from '../local/ModuleEvent'; export class EventManager { private static _receivedEventsHanlder: Function; //所有的事件集 private static _events: any = {}; /** * 注册事件,初始化的时候所有的事件都被注册了 * @param $event 模块事件 * */ static registerEvent($eventVo: EventVo, receivedEventsHanlder: Function = null): void { if ($eventVo === null) return; this._receivedEventsHanlder = receivedEventsHanlder; var eventClass: any = $eventVo.eventClass; if (eventClass) { if (this._events[eventClass] === undefined) this._events[eventClass] = []; //判断是否存在代理 var key: any = $eventVo.eventClass; var find: boolean = false; for (var _key in this._events) { if (_key == key) { var _arr: EventVo[] = this._events[_key]; if (_arr) { for (var i: number = 0, l: number = _arr.length; i < l; i++) { if (_arr[i].proxy === $eventVo.proxy) { find = true; break; } } if (find) break; } } } if (!find) this._events[eventClass].push($eventVo); } } /** * 某个代理发送事件 * @param $proxy 事件代理 * @param $event 事件 * */ static dispatchModuleEvent($event: ModuleEvent): void { if (!$event) return; var events: EventVo[] = this._events[$event.getClass()]; if (events) { for (var i: number = 0, l: number = events.length; i < l; i++) { var eventVo: EventVo = events[i]; eventVo.proxy.receivedEvents($event); if (this._receivedEventsHanlder) { this._receivedEventsHanlder(eventVo, $event); } } } } }