事件系统
事件监听 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:tokenExpired | Token过期 | 无 |
products:success | 商品数据加载成功 | ProductsResult |
products:failed | 商品数据加载失败 | Error |
sdk:loaded | SDK加载完成 | string[] (已加载的模块列表) |
sdk:error | SDK错误 | 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);
}
}