HarmonyOS应用开发实战:猫猫大作战-Menu 弹出菜单
·


前言
Menu 是 ArkUI 中的弹出菜单组件,通过 bindContextMenu 绑定到组件上。在「猫猫大作战」中,Menu 用于猫咪长按操作菜单。
一、Menu 基础
@Builder
CatMenu() {
Menu() {
MenuItem({ content: '🐱 查看详情', onClick: () => this.showDetail() })
MenuItem({ content: '🔄 合并优先', onClick: () => this.mergePriority() })
MenuItem({ content: '❌ 删除', onClick: () => this.removeCat() })
}
}
// 绑定
Column() { Text('🍎 长按猫咪').fontSize(16) }
.bindContextMenu(this.CatMenu(), true) // true = 长按触发
二、MenuItem 配置
| 参数 | 类型 | 说明 |
|---|---|---|
| content | string | 菜单项文本 |
| onClick | () => void | 点击回调 |
| icon | ResourceStr | 可选图标 |
三、游戏中的应用
@Builder
CatContextMenu(cat: Cat) {
Menu() {
MenuItem({
content: `🐱 ${CatConfig[cat.level].name} (Lv.${cat.level})`,
})
MenuItem({
content: '查看详情',
onClick: () => this.showCatDetail(cat),
})
MenuItem({
content: '合并优先',
onClick: () => this.mergePriority(cat),
})
MenuItem({
content: '取消',
})
}
}
// 绑定到猫卡
CatCard({ cat })
.bindContextMenu(this.CatContextMenu(cat), true)
.anchorPosition({ x: 8, y: 4 })
四、Menu vs Popup
| 特性 | Menu | Popup |
|---|---|---|
| 内容 | 菜单项列表 | 提示文本 |
| 交互 | 选择操作 | 阅读提示 |
| 触发 | 长按 | 点击控制状态 |
| 场景 | 操作列表 | 信息说明 |
五、最佳实践
- 长按触发:
bindContextMenu(builder, true) - 点击触发:
bindContextMenu(builder, false) - 数量控制:菜单项 3-5 个为宜
- 定位调整:配合
anchorPosition精确定位
总结
Menu 通过 bindContextMenu 弹出操作列表,适合猫咪长按菜单。核心要点:bindContextMenu(builder, isLongPress) 绑定、 MenuItem 构建菜单项、 anchorPosition 精确定位。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
更多推荐


所有评论(0)