我正在尝试改变我从SpriteBatchNode创建的雪碧的纹理。
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444];
spritesBgNode = [CCSpriteBatchNode batchNodeWithFile:@"playingCards.pvr.ccz"];
[self addChild:spritesBgNode];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"playingCards.plist"];我搜索并找到了一些使用
Texture2D *texture = [[Texture2D alloc] initWithImage:myUIImage]
[sprite setTexture: texture];因此,我的问题是:如何从我的batchNode文件中获取图像?还是使用另一种方法获取对playingCards.pvr.ccz文件中的图像的引用。
更新
首先,谢谢你的回应。因此,我使用您提供的代码片段获得了带有国王图像的mySprite。但我想改变雪碧的纹理,以显示卡的背面(因此它可以正面向上或向下播放),我有两个图像在CCSpriteBatchNode内。
但正如您指出的,“您无法从batchNode获取图像”,因此我不能使用[Texture2D alloc initWithImage:myUIImage]
我也要把精灵的形象从脸上朝下改变。
谢谢
发布于 2011-05-03 07:55:34
如果要将.pvr.ccz文件中的图像显示到屏幕上,请添加以下代码:
CCSprite * mySprite = [CCSprite spriteWithSpriteFrameName: @"name of sprite frame"];
[spritesBgNode addChild: mySprite];基本上,要显示batchNode的部分内容,您需要在其中添加一个sprite。sprite框架的名称位于添加到.plist中的FrameCache文件中。
您无法从batchNode获取图像。UIImage是iPhone API类型的映像,而不是cocos2d。在cocos2d中,为了方便起见,提供了initWithImage:(UIImage*)image。
如果使用[[Texture2D alloc] initWithImage:myUIImage],则使用UIImage创建NSData对象,纹理initWithData: data在内部调用。图像不被存储以供以后使用。
更新
在本例中,雪碧作为“batchNode视图”工作。若要查看批处理节点的不同部分,请更改sprite的框架。
[mySprite setDisplayFrame:
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: @"back of card"]]];https://stackoverflow.com/questions/5863912
复制相似问题