我也遇到这个问题了,需要怎么操作,你说的这个不是很理解
请问解决方法是啥
请问这个问题你是怎么解决的
在导出的main.js文件中,有个FBInstant.startGameAsync()方法,完成后会回调cc.director.loadScene()
这里修改一下执行的顺序:
先调用cc.director.loadScene(),完成后再回调FBInstant.startGameAsync()方法
就应该不会出现短暂黑屏的状态。
注意:这两个方法都是异步的,回调要在方法内的function里执行
这样就会出现加载进度条无法消失的情况
你把FBInstant.startGameAsync挪到 cc.loaderonProgress = null之前试试,顺便看看小括号和大括号的对应是不是正常的,正常效果应该在转圈的时候场景也在进行加载,场景加载完成后转圈消失。
还是不可以,进度条还是无法消失
请问能不能再main.js中调用外面的模块,如果我能在main.js中调用初始加载场景就可以没有黑屏问题
cc.director.loadScene()就是加载场景的,参数launchScene就是你设置的主界面(一进游戏就显示的场景),FBInstant.startGameAsync()是通知facebook游戏开始,转圈进度条也随着消失。
你试试用下面的代码直接覆盖main.js里面的 Var onStart = function(){…};
var onStart = function () {
cc.view.resizeWithBrowserSize(true);
// UC browser on many android devices have performance issue with retina display
if (cc.sys.os !== cc.sys.OS_ANDROID || cc.sys.browserType !== cc.sys.BROWSER_TYPE_UC) {
cc.view.enableRetina(true);
}
if (cc.sys.isBrowser) {
setLoadingDisplay();
}
if (cc.sys.isMobile) {
if (settings.orientation === 'landscape') {
cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
}
else if (settings.orientation === 'portrait') {
cc.view.setOrientation(cc.macro.ORIENTATION_PORTRAIT);
}
// qq, wechat, baidu
cc.view.enableAutoFullScreen(
cc.sys.browserType !== cc.sys.BROWSER_TYPE_BAIDU &&
cc.sys.browserType !== cc.sys.BROWSER_TYPE_WECHAT &&
cc.sys.browserType !== cc.sys.BROWSER_TYPE_MOBILE_QQ
);
}
// Limit downloading max concurrent task to 2,
// more tasks simultaneously may cause performance draw back on some android system / brwosers.
// You can adjust the number based on your own test result, you have to set it before any loading process to take effect.
if (cc.sys.isBrowser && cc.sys.os === cc.sys.OS_ANDROID) {
cc.macro.DOWNLOAD_MAX_CONCURRENT = 2;
}
// init assets
cc.AssetLibrary.init({
libraryPath: 'res/import',
rawAssetsBase: 'res/raw-',
rawAssets: settings.rawAssets,
packedAssets: settings.packedAssets,
md5AssetsMap: settings.md5AssetsMap
});
var launchScene = settings.launchScene;
cc.director.preloadScene(launchScene,
function () {
// Once all assets are loaded, tells the SDK
// to end loading view and start the game
cc.director.loadScene(launchScene,
function () {
FBInstant.startGameAsync()
.then(function () {
// Retrieving context and player information can only be done
// once startGameAsync() resolves
})
.catch(function (e) { cc.error(e); });
console.log('Success to load scene: ' + launchScene);
cc.loader.onProgress = null;
}
);
}
);
};
还是不行,进度条无法消失
这个你把修改的改回去,再看看进度条会不会消失。你这个改的我看着有点问题,completedCount 和totalCount应该是cc.loader.load的参数
虽然进度条消失了,但还是有短暂黑屏,而且进度条直接是从0变成100
这个方法只是解决黑屏问题,短暂黑屏的问题,你可以延时个100ms再执行FBInstant.startGameAsync()。
你要修改进度条按实际加载走,可以考虑用cc.loader.load预加载场景资源(替换原有的cc.director.preloadScene),这个方法里面会有加载的进度。
cc.loader.load这个也没有加载进度
打印有进度,但就是不显示
也不是不显示,是显示一下0,显示一下100,然后就没了,但打印会重新打印从0到100
main.js里面有个地方原先就有一个方法
function setLoadingDisplay () {
// Loading splash scene
cc.loader.onProgress = function (completedCount, totalCount, item) {
var progress = 100 * completedCount / totalCount;
FBInstant.setLoadingProgress(progress);
};
}
这个会修改进度条的显示,0直接到100,把这个方法的引用注释掉就行了
这个方法注释掉进度条就完全不显示了


