本页面实际上是一个TODO_LIST。
已完成的事项会用特殊标记表示。
26.3.25:将背景变成“贪吃蛇”:网格状的背景中随机选取一个网格作为“食物”,检测鼠标轨迹并对鼠标经过的网格视为身体并上色,类比SimonAKing/主页的演示视频。
26.3.25:将“音乐分享”的背景设置为随机选取一首歌静默播放(或通过程序来随机生成声音),并将声音数据传入背景,背景播放声音的波形、频谱图等。也可以让所有元素跟着声音在最激动位置上摆动。
26.3.31:设计出一套单片机游戏UI系统,对于不同的组件会申请一块独立的内存,从而实现不同组件之间互不干扰。
找一套内存分配算法TLSF 算法或 lwMEM;
内存池技术 (Memory Pool): 对于尺寸完全固定且频繁创建销毁的组件(比如通用的 UI 节点结构体),可以单独开辟一个“固定大小的内存池”,避免和变长的字符串/图片缓存混在一起申请。
不要每个组件都建画布内存: 组件只存属性,最终由一个统一的 Render 引擎去将它们画到你 sdram.h 里定义的 LCD_FRAME_BUFFER 中。
删除父节点时,子节点也要一并删除。
对于文本框,理想的选择是只存储字符串,滚动时根据视口计算需要渲染哪几行,再渲染到文本框上。
26.4.3:学习使用入门 | Chart.js 图表库。