cocos构建ios项目从启动图到第一个场景加载必现短暂黑屏

2.1.0的机制不一样,我用的1.10.2的,原理应该都是一样的

解决了么??????

你的确定可以吗

var showLaunchScreen = function(path) {
if (!window.jsb) {
return;
}
console.log(‘showLaunchScreen’);
var designSize = cc.size(1136,640);
var scene = new cc.Scene();
var canvasNode = new cc.Node();
var canvas = canvasNode.addComponent(cc.Canvas);
canvasNode.parent = scene;
//先run之后才会下面的设置才会生效
cc.director.runSceneImmediate(scene);
canvas.designResolution = designSize;

	var imgNode = new cc.Node();
	imgNode.parent = canvasNode;
	var sprite = imgNode.addComponent(cc.Sprite);
	sprite.type = cc.Sprite.Type.SIMPLE;
	sprite.sizeMode = cc.Sprite.SizeMode.TRIMMED;
	var img = new Image();
	img.srcSync = path;
	var _texture = new cc.Texture2D();
	_texture.initWithElement(img);
	var _spriteFrame = new cc.SpriteFrame();
	_spriteFrame.setTexture(_texture);
	sprite.spriteFrame = _spriteFrame;
	
	var ws = cc.view.getVisibleSizeInPixel();
	var cw = ws ? ws.width : cc.winSize.width;
	var ch = ws ? ws.height : cc.winSize.height;
	var dw = designSize.width;
	var dh = designSize.height;
	var i = 1 + (cw / ch - dw / dh);
	var k = 1 + (dw / dh - cw / ch);
	if (i > 1) {
		imgNode.width = dw * i;
		imgNode.height = dh * i;
		canvas.fitWidth = false;
		canvas.fitHeight = true;
	} else {
		imgNode.width = dw * k;
		imgNode.height = dh * k;
		canvas.fitWidth = true;
		canvas.fitHeight = false;
	}
}

这个是2.0的解决方案 image添加了srcSync的方法 可以参考https://forum.cocos.com/t/creator/77755 添加同步加载图片方法

依旧会短暂黑屏

  1. android AppActivity oncreate 函数创建一个启动图显示在最顶层
    iOS 在启动后也是同理创建启动图到最顶层
  1. js 在第一个场景挂个脚本, 在 start 函数中 调用 jsb 通知 原生层把启动图片隐藏.
3赞

没错,这个是安卓的实现方式,ios的类似,就oc那边加载图片有所区别

https://www.jianshu.com/p/21d269c8ef09 安卓版

1赞