363 lines
6.6 KiB
Markdown
363 lines
6.6 KiB
Markdown
# 动画字典 v1
|
||
> 文档版本:v1.0
|
||
> 最后更新:2026-04-02
|
||
|
||
|
||
## 1. 目的
|
||
|
||
这份文档用于统一说明:
|
||
|
||
- 当前系统里**已经存在**的动画触发点
|
||
- 哪些事件**适合继续补动画**
|
||
- 每个动画应该归属到哪一层
|
||
- `lite` 模式下哪些动画应该保留,哪些应该降级
|
||
|
||
一句话:
|
||
|
||
**动画字典 = 事件到动画效果的映射表。**
|
||
|
||
它的价值是:
|
||
|
||
- 防止动画实现越来越散
|
||
- 方便做性能分级
|
||
- 方便新玩法复用已有动画语言
|
||
- 方便以后做动画 profile / theme
|
||
|
||
---
|
||
|
||
## 2. 分层约定
|
||
|
||
当前动画建议分成 4 层:
|
||
|
||
### 2.1 地图空间动画
|
||
|
||
作用在地图对象本身。
|
||
|
||
例如:
|
||
|
||
- 当前目标点 pulse
|
||
- 可打点外环
|
||
- 已完成点 settle
|
||
- 已跳过点灰化
|
||
- 迷雾 reveal
|
||
- 金币收集爆点
|
||
|
||
归属:
|
||
|
||
- `MapPresentation`
|
||
- `MapScene`
|
||
- `WebGL renderer`
|
||
|
||
### 2.2 HUD 动画
|
||
|
||
作用在底部 HUD、数字、状态块。
|
||
|
||
例如:
|
||
|
||
- 进度跃迁
|
||
- 点距变化
|
||
- 速度/里程/心率数字轻量过渡
|
||
|
||
归属:
|
||
|
||
- 页面层 `WXML / WXSS`
|
||
- `MapEngine` 只负责下发状态类名
|
||
|
||
### 2.3 UI / Feedback 动画
|
||
|
||
作用在全局提示、局部闪光、反馈层。
|
||
|
||
例如:
|
||
|
||
- 顶部提示条出现
|
||
- 局部 stage flash
|
||
- 成功提示
|
||
- 错误/警示提示
|
||
|
||
归属:
|
||
|
||
- `feedbackConfig`
|
||
- `UiEffectDirector`
|
||
- `FeedbackDirector`
|
||
- 页面层消费
|
||
|
||
### 2.4 微交互动画
|
||
|
||
作用在按钮、弹层、设置面板等。
|
||
|
||
当前优先级最低。
|
||
|
||
---
|
||
|
||
## 3. 已实现动画字典
|
||
|
||
下面这一部分是当前已经落到代码里的内容。
|
||
|
||
| 事件/状态 | 地图空间动画 | HUD 动画 | UI/Feedback 动画 | lite 保留 |
|
||
|---|---|---|---|---|
|
||
| `control_ready` | 当前目标点更亮、ready 强调 | 打点相关状态切换 | 无 | 是 |
|
||
| `control_completed:start` | 开始点完成 settle 外环 | 进度/点距轻反馈 | 轻量成功反馈 | 是 |
|
||
| `control_completed:control` | 普通检查点完成 settle 外环 | 进度跃迁、点距动效 | 轻量地图 flash / pulse | 是 |
|
||
| `control_completed:finish` | 终点完成 settle 外环更明显 | 进度完成反馈 | finish 级反馈更强 | 是 |
|
||
| `control_skipped` | 当前点灰化、斜杠标记 | 当前目标推进 | 轻提示(较轻) | 是 |
|
||
| `target_changed` | 当前目标高亮切换 | 目标相关 HUD 状态切换 | 无 | 是 |
|
||
| `heart_rate_updated` | 无 | 心率数字过渡 | 无 | 是 |
|
||
| `timer_tick` | 无 | 计时器数字轻量过渡 | 无 | `lite` 可降级 |
|
||
| `mileage_updated` | 无 | 里程数字过渡 | 无 | `lite` 可降级 |
|
||
| `speed_updated` | 无 | 速度数字过渡 | 无 | `lite` 可降级 |
|
||
| `panel_progress_changed` | 无 | 进度数字 / 状态切换 | 无 | 是 |
|
||
| `map_pulse` | 地图局部 pulse | 无 | 可伴随轻 stage flash | `lite` 简化 |
|
||
| `stage_flash` | 无 | 无 | 局部屏幕闪光 | `lite` 可关闭 |
|
||
|
||
---
|
||
|
||
## 4. 推荐新增动画字典
|
||
|
||
下面这些是**非常适合继续补齐**的事件。
|
||
|
||
### 4.1 高优先级
|
||
|
||
#### `session_started`
|
||
|
||
建议效果:
|
||
|
||
- 地图:起点轻脉冲或开场吸附感
|
||
- HUD:开始态切换
|
||
- UI:顶部提示条轻弹入
|
||
|
||
原因:
|
||
|
||
- 这是对局开始的第一感受
|
||
- 很适合统一“进入比赛状态”的语言
|
||
|
||
#### `target_transition`
|
||
|
||
指:
|
||
|
||
- 一个点完成后
|
||
- 下一个目标点接管当前目标状态
|
||
|
||
建议效果:
|
||
|
||
- 地图:旧点 settle,新点接管 pulse
|
||
- HUD:目标进度轻切换
|
||
- UI:可以不额外做
|
||
|
||
原因:
|
||
|
||
- 当前这条链已经有基础,但还不够“连续”
|
||
- 这是顺序赛最值得打磨的高频体验
|
||
|
||
#### `control_skipped`
|
||
|
||
建议效果:
|
||
|
||
- 地图:当前点灰化过渡更明显
|
||
- HUD:提示“已跳过 x 号点”
|
||
- UI:轻量 skip toast / 轻闪光
|
||
|
||
原因:
|
||
|
||
- 逻辑已经有
|
||
- 状态已经有
|
||
- 动画语言还不够完整
|
||
|
||
---
|
||
|
||
### 4.2 中优先级
|
||
|
||
#### `gps_lock_changed:on`
|
||
|
||
建议效果:
|
||
|
||
- 地图:回中吸附感
|
||
- HUD:无
|
||
- UI:轻提示“已锁定定位点”
|
||
|
||
#### `gps_lock_changed:off`
|
||
|
||
建议效果:
|
||
|
||
- 地图:无
|
||
- HUD:无
|
||
- UI:轻提示“已解除锁定”
|
||
|
||
#### `center_scale_ruler_changed`
|
||
|
||
建议效果:
|
||
|
||
- UI:比例尺淡入/淡出
|
||
|
||
原因:
|
||
|
||
- 比例尺是工具型功能
|
||
- 不需要强动画,但可以更自然
|
||
|
||
#### `north_reference_changed`
|
||
|
||
建议效果:
|
||
|
||
- UI:小提示
|
||
- 指北针顶部文案轻切换
|
||
|
||
---
|
||
|
||
### 4.3 下一阶段重点
|
||
|
||
#### `heart_rate_zone_changed`
|
||
|
||
建议效果:
|
||
|
||
- HUD:颜色平滑切换
|
||
- UI:边缘呼吸 / 警示
|
||
- 地图:一般不建议直接做
|
||
|
||
原因:
|
||
|
||
- 未来心率玩法、危险状态会很依赖这条
|
||
|
||
#### `danger_state_changed`
|
||
|
||
适用于未来:
|
||
|
||
- 幽灵追逐
|
||
- 危险区
|
||
- 高压状态
|
||
|
||
建议效果:
|
||
|
||
- UI:边缘呼吸
|
||
- HUD:局部强调
|
||
- 地图:危险区波纹
|
||
|
||
#### `zone_entered / zone_cleared`
|
||
|
||
适用于未来:
|
||
|
||
- 区域玩法
|
||
- 迷雾玩法
|
||
- 领地玩法
|
||
|
||
建议效果:
|
||
|
||
- 地图:区域高亮 / reveal
|
||
- HUD:区域状态变化
|
||
- UI:轻量提示
|
||
|
||
---
|
||
|
||
## 5. 不建议过度动画化的节点
|
||
|
||
下面这些不建议做太重:
|
||
|
||
- 每次 GPS 更新
|
||
- 每次地图缩放
|
||
- 每次地图拖动
|
||
- 每次 compass heading 变化
|
||
- 每次 telemetry 微小变化
|
||
|
||
原因:
|
||
|
||
- 高频
|
||
- 成本高
|
||
- 极易拖垮低端机
|
||
|
||
原则:
|
||
|
||
**高频输入只做平滑,不做明显动画。**
|
||
|
||
---
|
||
|
||
## 6. 动画等级建议
|
||
|
||
当前已有两级:
|
||
|
||
- `standard`
|
||
- `lite`
|
||
|
||
建议动画字典里每项都标清楚在 `lite` 下如何处理。
|
||
|
||
### `standard`
|
||
|
||
- 完整 pulse
|
||
- 完整 settle
|
||
- HUD 数字过渡正常
|
||
- 局部 flash 保留
|
||
|
||
### `lite`
|
||
|
||
- pulse 层数减少
|
||
- settle 更轻
|
||
- HUD 数字动画缩短或关闭
|
||
- flash 关闭或极轻
|
||
|
||
---
|
||
|
||
## 7. 下一步推荐落地顺序
|
||
|
||
建议按这个顺序继续推进:
|
||
|
||
1. `session_started`
|
||
2. `target_transition`
|
||
3. `control_skipped`
|
||
4. `gps_lock_changed`
|
||
5. `heart_rate_zone_changed`
|
||
6. `danger_state_changed`
|
||
|
||
---
|
||
|
||
## 8. 执行原则
|
||
|
||
后面继续做动画时,遵循这几条:
|
||
|
||
### 8.1 先看事件,再决定动画
|
||
|
||
不要先想“做个好看的效果”,而是先问:
|
||
|
||
- 哪个事件需要被用户感知?
|
||
- 这个事件最适合地图 / HUD / UI 哪一层?
|
||
|
||
### 8.2 只强化高价值反馈
|
||
|
||
优先强化:
|
||
|
||
- 开始
|
||
- 打点成功
|
||
- 目标切换
|
||
- 跳点
|
||
- 危险状态
|
||
|
||
### 8.3 低端机优先
|
||
|
||
任何新增动画都要先问:
|
||
|
||
- `lite` 下要不要保留?
|
||
- 不保留是否影响信息传达?
|
||
|
||
### 8.4 动画不替代状态
|
||
|
||
动画只做状态的表现,不能替代状态本身。
|
||
|
||
也就是:
|
||
|
||
- 先有状态
|
||
- 再有动画
|
||
|
||
---
|
||
|
||
## 9. 阶段结论
|
||
|
||
当前动画系统已经具备:
|
||
|
||
- 主链
|
||
- 分层
|
||
- 高价值基础动画
|
||
- 性能等级
|
||
|
||
下一步的重点不是继续零散加动效,而是:
|
||
|
||
**按动画字典逐项补齐高频体验链。**
|
||
|
||
|
||
|