代码之家  ›  专栏  ›  技术社区  ›  vktr

cc.textureCache.addImage阻止UI

  •  1
  • vktr  · 技术社区  · 11 年前

    我希望在运行的场景中缓存大量纹理,而不阻止它,理论上,如果您将其称为三个参数,则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():{ ----- }
    }
    

    加载的函数被执行,字符串‘>>>>>>>>>>>>>>加载!'是异步打印的。但孔场景将冻结,直到加载所有纹理。

    在v3.0之前,这是用addImageAsync完成的,工作正常,现在在3.2中,这被合并到addImage中,但我无法使其工作,我是否缺少了什么?

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

    1 回复  |  直到 11 年前
        1
  •  0
  •   vktr    11 年前

    pandamicro已经提交了对此的修复,并将在3.4中提供

    这是为了防止您在3.4之前需要它: https://github.com/pandamicro/cocos2d-js/commit/2a124b5

    推荐文章