帮助在Objective-C中的变量中加载纹理

帮助在Objective-C中的变量中加载纹理,objective-c,xcode,cocos2d-iphone,Objective C,Xcode,Cocos2d Iphone,我有一个“球”精灵,当某个场景发生时,它会改变它的纹理。我改变它的纹理如下: [ball setTexture:[[CCTextureCache sharedTextureCache] addImage:@"red.png"]]; for (YourBallObject *ball in ballArray) { [ball setTexture:redTexture]; } 这确实有效;它将球精灵更改为使用red.png图像。如果我有大约20个球需要切换到使用这个精灵,我该如何处理

我有一个“球”精灵,当某个场景发生时,它会改变它的纹理。我改变它的纹理如下:

[ball setTexture:[[CCTextureCache sharedTextureCache] addImage:@"red.png"]];
for (YourBallObject *ball in ballArray)
{
    [ball setTexture:redTexture];
}
这确实有效;它将球精灵更改为使用red.png图像。如果我有大约20个球需要切换到使用这个精灵,我该如何处理?我会跑过每个球和“addImage”吗

如果可以,我希望加载纹理一次,将其保存在变量中(称为“redTexture”),然后能够将其指定给任何球对象


任何关于如何实现这一点的建议都将是巨大的帮助,谢谢

如果您将该语句放在for循环中,您将一次又一次地将red.png图像添加到共享纹理缓存中,我怀疑这是您想要的

让我们备份并重新编写一些内容,首先将red.png图像添加到共享纹理缓存中,单独一行:

[[CCTextureCache sharedTextureCache] addImage:@"red.png"];
随后,只需调用[CCTextureCache sharedTextureCache]即可再次获得相同的纹理。直到将另一个图像添加到共享纹理缓存,即

CCTextureCache是一个单例,它的文档不建议有一种方法来复制共享纹理缓存(这将是保存redTexture的理想方法)。在这种情况下,只需创建一个变量并将其指向[CCTextureCache sharedTextureCache];在完成之前,请注意不要向其添加任何其他图像:

CCTextureCache *redTexture = [CCTextureCache sharedTextureCache];
现在让我们假设您已经有一个名为ballArray的数组(或可变数组),它包含20个球对象。您可以这样循环它们:

[ball setTexture:[[CCTextureCache sharedTextureCache] addImage:@"red.png"]];
for (YourBallObject *ball in ballArray)
{
    [ball setTexture:redTexture];
}
或者更好,你可以这样做:

[ballArray makeObjectsPerformSelector:@selector(setTexture:) withObject:redTexture];

祝你好运。

嘿,回答得真棒!比我平时看到的还要努力。