play
恢复游戏逻辑与渲染
play 用于将小游戏从暂停或准备状态切换到活跃运行状态。调用此方法后,小游戏内部的帧回调(requestAnimationFrame)、物理引擎、定时器以及用户交互响应将全面激活,画面开始实时更新。
方法声明
objectivec
/**
* 开始或恢复小游戏运行。
* 操作成功后,小游戏实例将进入 `PLAYING` 状态。
* 此时游戏逻辑全面开启,并开始接收触摸事件。
*/
- (void)play;参数说明
| 参数名 | 类型 | 必传 | 描述 |
|---|---|---|---|
| 无 | - | - | 该方法不接受参数。 |
运行行为
- 引擎激活:恢复渲染循环(Render Loop),驱动 GPU 持续输出新的画面帧。
- 逻辑解冻:JavaScript 层的
requestAnimationFrame开始正常触发,恢复之前暂停的所有定时任务。 - 交互开启:小游戏容器视图(GameView)开始接收并处理用户的原生触摸事件(Touches)。
- 状态迁移:执行成功后,状态由
SUD_RT_GAME_STATE_WAITING (1)或SUD_RT_GAME_STATE_RUNNING (2)迁移至SUD_RT_GAME_STATE_PLAYING (3)。
代码示例
通常用于从原生 UI 返回游戏、App 从后台切回前台或游戏加载完成后正式开始的场景:
objectivec
- (void)handleAppDidBecomeActive {
// 1. 检查状态是否为等待中
if ([self.gameHandle getGameState] == SUD_RT_GAME_STATE_WAITING) {
// 2. 恢复游戏运行
[self.gameHandle play];
NSLog(@"App 回到前台,游戏恢复运行");
}
}
// 在监听到游戏脚本启动成功(RUNNING)后
- (void)onStateChangedFrom:(int)fromState to:(int)toState {
if (toState == SUD_RT_GAME_STATE_RUNNING) {
// 3. 脚本已就绪,立即开启播放模式
[self.gameHandle play];
}
}注意事项
- 前置条件:调用
play前必须确保已执行过create。如果在UNAVAILABLE状态下调用,该指令将无效。 - 音频同步:
play主要恢复渲染和逻辑,如果之前手动暂停了音频(通过AudioSession),建议在此处同步恢复声音播放。 - 性能开销:进入
PLAYING状态后,CPU 和 GPU 的负载会显著增加。 - 交互前提:只有在进入
PLAYING状态后,用户点击游戏内的按钮才会有反馈。