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.onLaunch和App.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 层的
onLaunch和onShow的参数。 - 热启动(切回前台):当你从小游戏所在 Activity 切换到其他页面再回来时,再次调用
start,传入的onShowMsg会触发 JS 层的onShow。
注意事项
- 不要重复启动:如果状态已经是
RUNNING,再次调用start可能会导致 JS 逻辑重复初始化。 - 配合 play() 使用:通常在监听到进入
RUNNING后,应紧接着调用gameHandle.play(),否则玩家会发现看得见画面但无法交互。 - JSON 格式:建议传入标准的 JSON 字符串,以便游戏内轻松解析。