我正在尝试更改我从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与King的图像一起使用。但是我想改变精灵的纹理来显示卡片的背面(这样可以面朝上或者朝下播放)我在CCSpriteBatchNode中都有两个图像。
但是当你指出“你无法从batchNode获取图像”时,我不能使用[[Texture2D alloc] initWithImage:myUIImage]
所以我要将精灵的图像从正面朝上改变为正面。
由于
答案 0 :(得分:1)
如果要将.pvr.ccz文件中的图像显示在屏幕上,请添加以下代码:
CCSprite * mySprite = [CCSprite spriteWithSpriteFrameName: @"name of sprite frame"];
[spritesBgNode addChild: mySprite];
基本上,要显示batchNode的部分内容,您需要为其添加一个精灵。精灵框架的名称位于您添加到FrameCache的.plist文件中。
您无法从batchNode获取图像。 UIImage是iPhone API类型的图像,而不是cocos2d。在cocos2d中,为方便起见提供了initWithImage:(UIImage*)image
。
如果使用[[Texture2D alloc] initWithImage:myUIImage]
,则UIImage用于创建NSData对象,并在内部调用[texture initWithData:data]。不存储图像供以后使用。
<强>更新强>
在这种情况下,精灵作为“批处理节点的视图”。要查看批处理节点的其他部分,请更改精灵的框架。
[mySprite setDisplayFrame:
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: @"back of card"]]];