猹引擎
GUI - 按钮与点击回传
这页解决什么问题
让“按钮点击”变成“服务端能识别的业务动作”。
不写代码版做法
你只需要统一三项:
- 按钮名:页面里这个按钮叫啥。
- 动作名:点击后要触发什么。
- 参数:这次点击要带什么信息。
按钮动作清单模板
| 按钮文案 | 动作名 | 参数示例 |
|---|---|---|
| 进入活动 | enter_activity | activityId |
| 领取奖励 | claim_reward | rewardId |
| 打开商店 | open_shop | shopId |
| 关闭页面 | close_page | pageId |
页面模板(带中文注释)
html
<button id="btnEnter">进入活动</button>
<button id="btnReward">领取奖励</button>
<script>
// 统一发送动作的方法
async function sendAction(action, body = {}) {
await ChaEngine.sendToServer('ui.action', {
action, // 动作名,例如 enter_activity
body // 参数对象,例如 { activityId: 'arena_001' }
});
}
// 点击“进入活动”
document.getElementById('btnEnter').addEventListener('click', () => {
sendAction('enter_activity', { activityId: 'arena_001' });
});
// 点击“领取奖励”
document.getElementById('btnReward').addEventListener('click', () => {
sendAction('claim_reward', { rewardId: 'daily_1' });
});
</script>回执模板(成功失败提示)
js
ChaEngine.onServerData((packet) => {
if (packet.channel !== 'ui.notice') {
return;
}
const data = JSON.parse(packet.data || '{}');
// data.type: success / error
// data.message: 提示语
if (data.type === 'success') {
showSuccess(data.message);
}
if (data.type === 'error') {
showError(data.message);
}
});客户常见错误
- 页面动作名写
enterActivity,服务端却约定enter_activity。 - 参数字段名不一致,例如服务端收
rewardId,页面发id。 - 页面用错通道,动作应该走
ui.action。
猹件开发组