菜单交互及菜单设计
写了个贪吃蛇的游戏。当时菜单实现是对菜单进行了抽象。实现了菜单模型的建立。
struct TypeMenu; typedef struct TypeMenu * PMenu; typedef struct TypeMenu { uint8 MenuID; uint8 * MenuName;//长度不超过7个汉字长度 uint8 MenuPosX; uint8 MenuPosY; PMenu ParentMenu;//指向父菜单的指针 PMenu ChildMenu;//指向子菜单的指针 void (*func)(uint8 id);//功能函数 } Menu; void MenuInit(PMenu MenuPtr); void MenuRefresh(uint8 code); void SetMenuPara(void); void SetMenu(PMenu MenuPtr); void SetMenuPage(uint8 dir); void SetMenuIndex(uint8 dir); void MenuEvent(uint8 KeyCode); void MenuRecBack(); void MenuRecMain(); void MenuShow(uint8 num);
这是对菜单以及菜单操作函数的声明。当时感觉这样菜单通用性较强。完整的代码在菜单文件中单独列出。
这次看了MSP430人机交互中关于菜单的内容。感觉这方面还有很多没有考虑到。
1. 菜单交互的设计原则
操作的快捷性
防止误操作
符合操作习惯
有效提示
2.书中举了基于状态机的菜单的实现。
对于这2种方法各自的优缺点,由于以前不曾用状态机写过,也就不太清楚了。感觉两种方法都不错。