import * as React from 'react'; import { ModuleEvent } from '../leo/frame/local/ModuleEvent'; import { EventVo } from '../leo/frame/vo/EventVo'; import { EventManager } from '../leo/frame/manager/EventManager'; import { Proxy } from '../leo/frame/local/Proxy'; export interface PropProxy{ proxy: Proxy; } export class BaseSprite extends React.Component{ constructor(props:T,context:any) { super(props, context); this.initRegisterEvents(); } //这里是动态添加要注册的事件 private initRegisterEvents(): void{ if (this.props.proxy) { let _registerEvents: any[] = this.registerEvents(); if (!_registerEvents) return; for (var i: number = 0, l: number = _registerEvents.length; i < l; i++){ var _eventVo: EventVo = new EventVo(); _eventVo.proxy = this.props.proxy; _eventVo.eventClass = _registerEvents[i]; EventManager.registerEvent(_eventVo,this.receivedEventsHanlder.bind(this)); } } } private receivedEventsHanlder(eventVo: EventVo, event: ModuleEvent) { if (eventVo.proxy == this.props.proxy) { this.receivedEvents(event); } } registerEvents(): any[] { return []; } receivedEvents(eventClass: ModuleEvent): void { } protected dispatchModuleEvent(event: ModuleEvent): void { if (this.props.proxy) this.props.proxy.dispatchModuleEvent(event); } }