在游戏端和组件端分别,定义待执行函数(该函数拥有当前上下文),再到对方去执行,所谓的通讯,即为函数传递的形参。
ui组件:
export function sendToGame(data: Object) { // console.log('sendToGamend', data) window'sendToGame' }
export function handleGameMessage(handler: (data: Object) => void) { window['handleGame'] = handler }
游戏组件:
function sendToUI(data) { // console.log("sendToUI: ", data); if (window.handleGame) { window.handleGame(data); } }
(function () { const window = globalThis;
(function () { window.sendToUI = sendToUI; window.sendToGame = (data) => { // console.log("sendToGame: ", data); window.cc.game.emit("ui", data); }; /* 原始代码 */ }.call(this)); }.call(this));