首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CCSpriteBatchNode更改sprite纹理

从CCSpriteBatchNode更改sprite纹理
EN

Stack Overflow用户
提问于 2011-05-03 00:38:01
回答 1查看 2.8K关注 0票数 1

我正在尝试改变我从SpriteBatchNode创建的雪碧的纹理。

代码语言:javascript
复制
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444];

spritesBgNode = [CCSpriteBatchNode batchNodeWithFile:@"playingCards.pvr.ccz"];
[self addChild:spritesBgNode];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"playingCards.plist"];

我搜索并找到了一些使用

代码语言:javascript
复制
Texture2D *texture = [[Texture2D alloc] initWithImage:myUIImage]

[sprite setTexture: texture];

因此,我的问题是:如何从我的batchNode文件中获取图像?还是使用另一种方法获取对playingCards.pvr.ccz文件中的图像的引用。

更新

首先,谢谢你的回应。因此,我使用您提供的代码片段获得了带有国王图像的mySprite。但我想改变雪碧的纹理,以显示卡的背面(因此它可以正面向上或向下播放),我有两个图像在CCSpriteBatchNode内。

但正如您指出的,“您无法从batchNode获取图像”,因此我不能使用[Texture2D alloc initWithImage:myUIImage]

我也要把精灵的形象从脸上朝下改变。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2011-05-03 07:55:34

如果要将.pvr.ccz文件中的图像显示到屏幕上,请添加以下代码:

代码语言:javascript
复制
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的框架。

代码语言:javascript
复制
[mySprite setDisplayFrame:
    [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: @"back of card"]]];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5863912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档