gpt4 book ai didi

cocos2d-iphone - 更改由 CCRenderTexture 创建的 CCSprite 的 textureRect

转载 作者:行者123 更新时间:2023-12-05 01:20:16 24 4
gpt4 key购买 nike

我有一个 CCSprite 需要从一端逐渐线性耗尽,比方说从左到右。为此,我正在尝试更改 textureRect Sprite 的属性,以便从一端耗尽的部分在 Sprite 的显示框架“之外”。

我之前用从 spritesheet 加载的 sprite 做过这种事情。它工作得很好。但是我创建了这个 CCSprite 使用 CCRenderTexture 并通过更改textureRect 属性,整个 Sprite 消失。

第一张图片是我从 CCRenderTexture 获得的原始 CCSprite。第二张图片显示了我想要实现的效果。需要省略 Sprite 的黑色虚线矩形部分。只需要 Sprite 的蓝色虚线部分被显示。本质上,这个蓝色虚线矩形是我的 textureRect。

changing textureRect property to show only portion of the whole sprite

有什么方法可以让我的 Sprite 从一端缩小。另外,正常创建的 Sprite 和使用 CCRenderTexture 创建的 Sprite 之间有什么区别吗?

最佳答案

在使用一些低级 hack 之前,我已经做过类似的事情。

如果您使用 CCProgressTimer,有一个变通解决方案,这非常简单,我认为对于您的示例来说应该足够了。

但是您在评论中说您有一些特殊 要求,例如“同时从两端用尽”,然后需要一些低级 hack。我对上一个对象的解决方案是:

1) 获取纹理图像的原始数据。在 cocos2d 中,您可以使用 CCRenderTexture,在 cocos2d-x 中,您可以使用 CCImage

2) CCRenderTexture 有一个方法 - (BOOL) saveToFile: (NSString *) name
格式:(tCCImageFormat)格式
。您可以阅读其源代码,然后尝试将其保存到二维数组中,而不是像 byte raw[1024][768] 那样。这个数组中的每个元素代表你图片上的一个像素(类型可能不是byte,我不确定,差点忘了细节)。格式必须是 PNG,因为需要透明度。

3)直接修改原始数据,设置像素的透明度为0x0,你希望它消失。

4) 使用您修改的图片数据重新初始化一个CCRenderTexture

我不能直接提供代码,因为这是我的一个项目的商业 secret 和核心部分。但我可以与您分享我的解决方案。您还需要了解 PNG 文件的工作原理。阅读:

https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header

关于cocos2d-iphone - 更改由 CCRenderTexture 创建的 CCSprite 的 textureRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16041268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com