Skip to content

play

恢复游戏逻辑与渲染

play 用于将小游戏从暂停或准备状态切换到活跃运行状态。调用此方法后,小游戏内部的帧回调(requestAnimationFrame)、物理引擎、定时器以及用户交互响应将全面激活,画面开始实时更新。


方法声明

objectivec
/**
 * 开始或恢复小游戏运行。
 * 操作成功后,小游戏实例将进入 `PLAYING` 状态。
 * 此时游戏逻辑全面开启,并开始接收触摸事件。
 */
- (void)play;

参数说明

参数名类型必传描述
--该方法不接受参数。

运行行为

  1. 引擎激活:恢复渲染循环(Render Loop),驱动 GPU 持续输出新的画面帧。
  2. 逻辑解冻:JavaScript 层的 requestAnimationFrame 开始正常触发,恢复之前暂停的所有定时任务。
  3. 交互开启:小游戏容器视图(GameView)开始接收并处理用户的原生触摸事件(Touches)。
  4. 状态迁移:执行成功后,状态由 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 状态后,用户点击游戏内的按钮才会有反馈。