大厅+子游戏, 1.6升级1.8遇到的问题.

问题描述:

之前1.62版本时, 已成功使用论坛中方法, 实现大厅+子游戏切换(不重启).
重点在于下载子游戏的 /src 和 /res 资源后.

//step1.
var path_dir = jsb.fileUtils ? jsb.fileUtils.getWritablePath() : “/”);
var settings = require(path_dir + “src/settings.js”);

//step2.
var jsList = settings.jsList;
var bundledScript = settings.debug ? ‘project.dev.js’ : ‘project.js’;
if (jsList) {
jsList.push(bundledScript);
} else {
jsList = [bundledScript];
}
jsList = jsList.map(function (x) { return path_dir + ‘src/’ + x); });

//step3.
var option = {
id: ‘GameCanvas’,
scenes: settings.scenes,
debugMode: settings.debug ? cc.DebugMode.INFO : cc.DebugMode.ERROR,
showFPS: 0,
frameRate: 60,
jsList: jsList,
groupList: settings.groupList,
collisionMatrix: settings.collisionMatrix,
renderMode: 0
};
cc.game.run(option, onStart);

//…

由于1.62部分系统级bug(unschedule相关问题), 需要升级IDE, 目前IDE版本1.8.2.

依照旧方法, 发现可以切换到子游戏(加载成功资源&场景).

但是project.js好像未被(加载/执行)成功, 导致子游戏场景中绑定的脚本被提示找不到:
Script attached to ‘Canvas’ is missing or invalid.

经反复查找原因, 似乎require("/子游戏路径/src/project.js") 会提示 Failed to invoke require, location: …\manual\jsb_global.cpp:211.

project.js未被js虚拟机正确加载 or 执行???

有遇到相同情况的吗, 请教正确的加载成功方式, 3Q~

经研究 jsb_global.cpp 及测试 project.js 文件. 发现

cc._RF.push(module, “b3e99g8kNJIEaGko1/TJx7M”, “tstView”);
//…
cc._RF.pop();

会导致出现报错: Failed to invoke require, location: …\manual\jsb_global.cpp:211.

cc._RF.push是绑定uuid和js类名的地方. 1.8有什么新机制导致无法正确执行吗???

如何解决这个问题呢, 有引擎团队的朋友看到吗? 请帮忙解惑…

请问 您这问题 解决了吗

兄弟有解决吗,会不会是uuid重复了啊

问题已经解决了. simulator下会报 jsb_global.cpp:211错误, 真机运行 或 win32下, 不报错能跑通.

话说为啥simulator一直和真机运行起来效果不同??? 导致很多问题得反复测试…

你好!我遇到问题是 我在web端运行都是正常的,我在iOS 真机调试有的 场景上脚本文件可以执行,有的场景的 脚本文件执行不了。也报同样的问题。 请问大致是哪里的问题,江湖救急啊!

你好,请问这个问题,你解决了没,怎样解决的,谢谢

我也遇到同样的问题为1.8.2。
但我解决了为1.5.2。大厅+子游戏报错1.8.2版本。

解决了吗,这个问题