首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帮助在Objective-C中将纹理加载到变量中

帮助在Objective-C中将纹理加载到变量中
EN

Stack Overflow用户
提问于 2011-07-03 02:16:28
回答 1查看 212关注 0票数 1

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

代码语言:javascript
复制
[ball setTexture:[[CCTextureCache sharedTextureCache] addImage:@"red.png"]];

这确实起作用了;它更改了球子画面以使用red.png图像。如果我有大约20个球需要切换到使用这个精灵,我该如何处理呢?我会遍历每一个球和"addImage“吗?

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-03 05:27:03

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

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

代码语言:javascript
复制
[[CCTextureCache sharedTextureCache] addImage:@"red.png"];

随后,只需调用CCTextureCache sharedTextureCache,即可再次获得相同的纹理。直到您将另一个图像添加到共享纹理缓存。

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

代码语言:javascript
复制
CCTextureCache *redTexture = [CCTextureCache sharedTextureCache];

现在让我们假设您已经有一个名为ballArray的数组(或可变数组),它包含20个球对象。您可以像这样循环遍历它们:

代码语言:javascript
复制
for (YourBallObject *ball in ballArray)
{
    [ball setTexture:redTexture];
}

或者更好的是,你可以这样做:

代码语言:javascript
复制
[ballArray makeObjectsPerformSelector:@selector(setTexture:) withObject:redTexture];

祝你事事顺利。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6558770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档