从CCSpriteBatchNode更改精灵纹理

时间:2011-05-03 00:38:02

标签: objective-c cocos2d-iphone

我正在尝试更改我从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]

所以我要将精灵的图像从正面朝上改变为正面。

由于

1 个答案:

答案 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"]]];