cc.textureCache.addImage阻止UI

时间:2015-02-25 15:34:51

标签: cocos2d-x cocos2d-x-3.0 cocos2d-js

我想在运行的场景中缓存大量纹理而不阻塞它,理论上cc.textureCache.addImage如果你称之为三个参数,就会进行缓存异步。这种情况没有发生。

代码:

rainOfArrows: {
_animFrames:[],
loaded: function(){
  console.log('>>>>>>>>>>>>>>LOAD!')
},
load: function(){
  /* Load all animation arrow sprites in memory & generate animation */
  var str = '';
  for (var i = 0; i < 40; i++) {
    str = 'arrow00' + (i < 10 ? ('0' + i) : i) + '.png';
    cc.textureCache.addImage('res/SkilllsAnimations/arrowRain/'+str, this.loaded, this);
    var spriteFrame = new cc.SpriteFrame(texture, cc.rect(0,0,winsize.width,winsize.height));

    cc.spriteFrameCache.addSpriteFrame(spriteFrame, str);
    this._animFrames.push(cc.spriteFrameCache.getSpriteFrame(str));
  }
},
run: function():{ ----- }
}

执行加载的功能,字符串'&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; LOAD!'被打印为异步。但是孔场景会冻结,直到所有纹理都被加载。

在v3.0之前,这是用addImageAsync完成的,并且工作正常,现在在3.2中这是在addImage中合并但是我无法使它工作,我错过了什么?

顺便说一下,我没有使用包装在一个img和plist中的纹理,因为它们太大了。

1 个答案:

答案 0 :(得分:0)

pandamicro已提交此修复程序,将在3.4

中提供

以下是在3.4:https://github.com/pandamicro/cocos2d-js/commit/2a124b5

之前需要它的情况
相关问题