2014-03-31 119 views
0

我試圖加載的紋理,這是包含在一個NSMutableArray的,但我得到這個錯誤:無效的紋理精靈

終止應用程序由於未捕獲的異常「NSInternalInconsistencyException」,理由是:「質地無效雪碧」

這是我正在努力提及我紋理可變數組:

background = [CCSprite spriteWithTexture:[loadedTextures objectAtIndex:0]]; 

這是我如何生成我的紋理:

- (void)loadAssets { 

     NSArray *imageNames = @[ 
           @"bg-001.png", 
           @"bg-002.png" 
           ]; 

     for (NSString *imageName in imageNames) 
     { 
      CCTexture * tex = [CCTexture textureWithFile:imageName]; 
      [loadedTextures addObject:tex]; 
     } 
    } 
+0

只是一邊:你可以使用'[CCSprite spriteWithFile:imageNames [0]]'更簡單 –

+0

但是,這不會預載圖像 –

回答

1

該消息指示紋理爲零。這很奇怪,因爲你不能在數組中存儲nil的值。這隻剩下loadedTextures本身是nil的唯一可能的解釋。

檢查這個(或類似的)線初始化數組:

loadedTexture = [NSMutableArray array]; 

這必須是for循環填充所述loadedTextures陣列之前。

+0

謝謝,我試過你的方法,並打印數組像這樣NSLog(@嘗試preloadedtexture%@「,[loadedTextures objectAtIndex:0]);那麼我在日誌中試試preloadedtexture 這看起來不是我的 –

+0

啊,這是一個CCProxy,它被用來替換紋理緩存。 CCProxy對象返回時,會對紋理/精靈幀有一個弱引用,而不是紋理或精靈幀。如果其他地方沒有使用紋理,則代理的目標(紋理)將爲零,因此CCSprite會抱怨正確,但應該加載紋理。可能是v3中的一個bug。 – LearnCocos2D