2014-03-31 83 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