由于场景内的元素需要动态加载和创建,贴图又都是异步加载没有同步加载方法,这就会导致进入场景之后元素才被创建出来,会出现场景由空白突然一闪出现东西,怎么做才能在场景展示之前就把元素创建好呢?
预先加载场景
cc.director.preloadScene(‘场景名’,null,function (){});
但是任然要ccf.director.loadScene 不过进游戏显示LOGO的那一段时间可以完成加载 如果较长的话 建议单独给一个加载场景
不行,你没明白我的意思。我的意思是这个场景内的东西都是动态创建的,比如都是精灵,而贴图资源是需要异步加载才能使用,这样就导致在场景打开时东西都还没创建好,必须等到下一帧资源加载好才能创建并显示。怎么做才能在场景还没有打开时就把资源都加载好?我想做的是在场景打开时里面的东西都已经创建好了。或者有没有同步加载资源的方法?
你把资源提前都加载好
没有同步加载的方法,也只能这样做了。
let url = “resources/” + this.squareDir + ‘/flag_’ + index + ‘.png’;
let spFrame = new cc.SpriteFrame(cc.url.raw(url));
可以试试这个方法赋值,这个是同步的
请问如果图片在一张大图里呢?
大图的话那没办法了。最好的办法就是在加载界面的时候先loadRes(异步)。然后在展示界面再getRes(同步,不过得先loadRes)
嗯,目前看只能这样了,不知道为什么不学习node.js同时提供同步方法。