Skip to content

start

启动小游戏运行环境

start() 是让小游戏真正“活”起来的关键指令。在执行此方法之前,游戏环境必须已通过 create() 创建完毕。

调用 start() 后,Runtime 会加载游戏主入口脚本(通常是 game.js),初始化游戏逻辑,并开始执行游戏循环。此时,小游戏会进入 RUNNING 状态。


方法声明

java
/**
 * 启动小游戏运行环境。
 * 操作成功后小游戏实例进入 `RUNNING` 状态。此时小游戏脚本正常执行。
 * 当开始小游戏或从后台切换到前台时应执行此接口。
 *
 * @param onShowMsg 程序切前台后,作为 js api `onShow` 回调的参数。
 * 通常传入一个 JSON 字符串,用于向游戏传递启动场景或参数。
 */
void start(String onShowMsg);

运行行为与状态迁移

1. 前提条件

  • 状态必须为 GAME_STATE_WAITING
  • 游戏资源包必须已经解压并定位。

2. 执行过程

  • 引擎加载并解析 JS 脚本。
  • 触发游戏内部的生命周期函数(如 App.onLaunchApp.onShow)。
  • 开启渲染循环和逻辑循环。

3. 结果

  • 成功后,状态变为 GAME_STATE_RUNNING
  • 此时游戏画面开始绘制,但由于尚未调用 play(),游戏可能不会响应任何触摸输入。

代码示例

java
// 假设已在 setGameStateListener 中监听到状态变为 WAITING
@Override
public void onStateChanged(int fromState, int toState) {
    if (toState == SUDRTGameHandle.GAME_STATE_WAITING) {
        // 准备传给游戏的启动参数,例如:入口场景值、分享者的 ID 等
        String onShowMsg = "{\"scene\": 1001, \"query\": {\"inviter\": \"user_99\"}}";
        
        // 正式运行脚本
        gameHandle.start(onShowMsg);
    }
}

核心参数:onShowMsg

onShowMsg 参数是原生层向游戏层传递业务上下文的主要通道:

  • 首次启动:对应小游戏 JS 层的 onLaunchonShow 的参数。
  • 热启动(切回前台):当你从小游戏所在 Activity 切换到其他页面再回来时,再次调用 start,传入的 onShowMsg 会触发 JS 层的 onShow

注意事项

  • 不要重复启动:如果状态已经是 RUNNING,再次调用 start 可能会导致 JS 逻辑重复初始化。
  • 配合 play() 使用:通常在监听到进入 RUNNING 后,应紧接着调用 gameHandle.play(),否则玩家会发现看得见画面但无法交互。
  • JSON 格式:建议传入标准的 JSON 字符串,以便游戏内轻松解析。