跳到主要内容

事件系统

事件监听 minigameApi.on(event, callback)

// 游戏菜单事件
minigameApi.on('menu:show', (data) => {
console.log('游戏菜单显示成功', data);
});

minigameApi.on('menu:hide', () => {
console.log('游戏菜单隐藏');
});

minigameApi.on('menu:error', (error) => {
console.error('游戏菜单错误', error);
});

// 支付事件
minigameApi.on('payment:success', (data) => {
console.log('支付成功', data);
});

minigameApi.on('payment:failed', (error) => {
console.log('支付失败', error);
});

minigameApi.on('payment:hide', () => {
console.log('支付页面隐藏');
});

minigameApi.on('payment:queryChannelsFailed', (error) => {
console.log('查询渠道失败', error);
});

// 登录事件
// data 的实际类型为 LoginResult: { code: number, message: string, data: { jwtToken: string, expiresIn: number, refreshToken: string } }
// 推荐写法: console.log('登录成功,jwtToken:', data.data.jwtToken);
minigameApi.on('login:success', (data) => {
console.log('登录成功,jwtToken:', data.jwtToken || data?.data?.jwtToken);
});

minigameApi.on('login:failed', (error) => {
console.log('登录失败', error);
});

minigameApi.on('login:statusChanged', (status) => {
console.log('登录状态变化', status);
});

minigameApi.on('login:tokenExpired', () => {
console.log('Token已过期');
});

// 商品事件
minigameApi.on('products:success', (data) => {
console.log('商品数据加载成功', data);
});

minigameApi.on('products:failed', (error) => {
console.log('商品数据加载失败', error);
});

// 通用事件
minigameApi.on('sdk:loaded', (modules) => {
console.log('SDK加载完成', modules);
});

minigameApi.on('sdk:error', (error) => {
console.error('SDK错误', error);
});

事件类型

事件名描述回调参数
menu:show游戏菜单显示成功{ res: string, size?: { width?: string, height?: string } }
menu:hide游戏菜单隐藏
menu:error游戏菜单错误Error
payment:success支付成功{ order_no: string, openid: string, order_no_hash: string }
payment:failed支付失败Error
payment:hide支付页面隐藏
payment:queryChannelsFailed查询渠道失败Error
login:success登录成功LoginResult
login:failed登录失败Error
login:statusChanged登录状态变化'logged_in' | 'logged_out' | 'token_expired'
login:tokenExpiredToken过期
products:success商品数据加载成功ProductsResult
products:failed商品数据加载失败Error
sdk:loadedSDK加载完成string[] (已加载的模块列表)
sdk:errorSDK错误Error

取消事件监听 minigameApi.off(event, callback?)

// 取消特定回调
minigameApi.off('payment:success', callback);

// 取消所有回调
minigameApi.off('payment:success');

最佳实践:事件管理

// 使用事件委托模式
class GameManager {
constructor() {
this.minigameApi = midas.minigame(config);
this.setupEventListeners();
}

setupEventListeners() {
this.minigameApi.on('payment:success', this.handlePaymentSuccess.bind(this));
this.minigameApi.on('menu:show', this.handleMenuShow.bind(this));
}

handlePaymentSuccess(data) {
// 处理支付成功
this.updateGameState(data);
}

handleMenuShow(data) {
// 处理游戏菜单显示
this.trackEvent('menu_show', data);
}
}