47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
const { ccclass } = cc._decorator;
|
|
|
|
type PausePanelAction = (event?: cc.Event, customEventData?: string) => void;
|
|
|
|
interface PausePanelActions {
|
|
[name: string]: PausePanelAction;
|
|
}
|
|
|
|
/** Pause prefab 中跨脚本按钮的桥接层;setUi 内部按钮仍保持原绑定。 */
|
|
@ccclass
|
|
export default class PausePanel extends cc.Component {
|
|
private actions: PausePanelActions = null;
|
|
|
|
bind(actions: PausePanelActions) {
|
|
this.actions = actions || {};
|
|
}
|
|
|
|
closePause(event?: cc.Event, customEventData?: string) {
|
|
this.invoke("closePause", event, customEventData);
|
|
}
|
|
|
|
shareFriend(event?: cc.Event, customEventData?: string) {
|
|
this.invoke("shareFriend", event, customEventData);
|
|
}
|
|
|
|
openMessage(event?: cc.Event, customEventData?: string) {
|
|
this.invoke("openMessage", event, customEventData);
|
|
}
|
|
|
|
returnHome(event?: cc.Event, customEventData?: string) {
|
|
this.invoke("returnHome", 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("PausePanel action is not bound:", name);
|
|
}
|
|
|
|
onDestroy() {
|
|
this.actions = null;
|
|
}
|
|
}
|