const { ccclass } = cc._decorator; type PropWindowAction = (event?: cc.Event, customEventData?: string) => void; interface PropWindowActions { [name: string]: PropWindowAction; } /** propWindow prefab 的按钮桥接层。 */ @ccclass export default class PropWindowPanel extends cc.Component { private actions: PropWindowActions = null; bind(actions: PropWindowActions) { this.actions = actions || {}; } clickBtn(event?: cc.Event, customEventData?: string) { this.invoke("clickBtn", event, customEventData); } closePropBuy(event?: cc.Event, customEventData?: string) { this.invoke("closePropBuy", event, customEventData); } private invoke(name: string, event?: cc.Event, customEventData?: string) { const action = this.actions && this.actions[name]; if (action) { action(event, customEventData); return; } cc.warn("PropWindowPanel action is not bound:", name); } onDestroy() { this.actions = null; } }