ios - CCSprite 贴图大小

标签 ios xcode cocos2d-iphone

我对更改 CCSprite 的纹理有点困惑。

我有:

aTexture[NUM_WALLS+11] = [[CCTexture2D alloc]initWithImage:[UIImage imageNamed:@"shop1.png"]];
[aSprite setTexture:aTexture[NUM_WALLS+11]];

aTexture[NUM_WALLS+9] = [[CCTexture2D alloc]initWithImage:[UIImage imageNamed:@"bush2.png"]];
[aSprite setTexture:aTexture[NUM_WALLS+9]];

这两张图片有两种不同的尺寸。但是,当我更改纹理时, Sprite 不会改变大小。相反,图像会缩放到 Sprite 的大小。我认为 Sprite 应该改变大小。

有人可以澄清一下吗?

最佳答案

图像文件可能有不同的大小,但纹理可能使用相同的大小,因为它们通常会放大到下一个最接近的 2 的幂(在 cocos2d 中默认禁用 NPOT 纹理支持)。

含义:如果一张图片为 150x150,另一张为 250x250,则它们的纹理都将具有 256x256 尺寸。如果您从图像文件加载 Sprite ,cocos2d 会调整实际绘制的纹理部分以适应图像的大小 (contentSize)。如果您更改纹理,cocos2d 将只使用纹理的大小,而不管存储在纹理中的图像的大小 - 因为在创建纹理后该信息会丢失。

在这种情况下,您将不得不手动调用 setTextureRect: 在 Sprite 上以仅绘制纹理中实际图像的区域。

更好的解决方案是create a texture atlas使用两种纹理,然后只需更改 Sprite 显示的 Sprite 帧。它更容易,也节省内存。

关于ios - CCSprite 贴图大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270769/

相关文章:

android - 在 Android 和 IOS 之间选择使用哪种音频文件格式?

ios - Objective-C 桥接问题。如何在 Swift 项目中使用 Obj-C 框架?

ios - Firebase 崩溃报告 iOS - 无法读取的崩溃 - 上传符号文件?

ios - 将数据从 View Controller 传递到 Cocos2D 场景

ios - 用于 2D 游戏的 Unity

ios - Segue in swift 2 问题

swift - 具有动态和固定单元格的 TableView Swift

java - 传递包含两个整数的对象或不同的方法?

iphone - 在特定时间启动CCAction

ios - DocInteraction 示例代码 (UIDocumentInteractionController) 在 iOS 4.3 模拟器上损坏