Iphone 如何将CCSpriteFrame转换为CCTexture2D(Cocos2d)?

Iphone 如何将CCSpriteFrame转换为CCTexture2D(Cocos2d)?,iphone,ios,xcode,cocos2d-iphone,Iphone,Ios,Xcode,Cocos2d Iphone,可能重复: 是否可以获取从CCSpriteFrame缓存获取的CCSpriteFrame,并将其转换为CCTexture2D 我试过这个: -(id)initWithFile:(NSString*)filename body:(b2Body*)body original:(BOOL)original { NSAssert(filename != nil, @"Invalid filename for sprite"); CCTexture2D *texture = [[[

可能重复:

是否可以获取从CCSpriteFrame缓存获取的CCSpriteFrame,并将其转换为CCTexture2D

我试过这个:

-(id)initWithFile:(NSString*)filename body:(b2Body*)body  original:(BOOL)original
{
    NSAssert(filename != nil, @"Invalid filename for sprite");

    CCTexture2D *texture =  [[[CCSpriteFrameCache sharedSpriteFrameCache]spriteFrameByName:filename ]texture];

    return [self initWithTexture:texture body:body original:original];
}     
但在屏幕上显示的是整个spritesheet纹理,而不仅仅是一帧

在这个链接中有一个类似的问题: 但是我觉得这个链接的答案没有帮助

我也尝试过这个,但我得到了同样的结果:

-(id)initWithFile:(CCSpriteFrame*)filename body:(b2Body*)body  original:(BOOL)original
{
   NSAssert(filename != nil, @"Invalid filename for sprite");

   CCSprite * sprite_ = [CCSprite spriteWithSpriteFrame:filename];
   CCTexture2D *texture =  [sprite_ texture];
   return [self initWithTexture:texture body:body original:original];

}
这段代码适合我(cocos2d2.0)

SpriteWithPriteFrame构造器根据sprite框架中包含的裁剪规格正确裁剪。是否绝对需要纹理,是否可以使用CCSprites?很难猜测代码中的自我是什么,它扩展了什么:)。。。但您可能希望使用PriteFrame:body:original初始化。

您是否尝试过:

-(void) addSpriteFramesWithFile:(NSString*)plist textureFile:(NSString*)textureFileName
在那之后:

CCTexture2D *cachedTexture = [[CCTextureCache sharedTextureCache] textureForKey:textureFileName];

不是重复的。我需要将CCSpriteFrame转换为CCTexture2D,而不是将其设置为由CCSprite使用。我正在尝试使用以下行“CCTexture2D*纹理=[[[CCSpriteFrameCache sharedSpriteFrameCache]spriteFrameByName:filename]texture];”但它返回的是整个spritesheet png,而不仅仅是一帧。从技术上讲,这是同一个问题,但他们的答案可能不是你想要的。你应该在你的问题中包括对这一点的引用,这样它就不会被标记为重复,这样你就可以得到一个正确的解决方案!好的,我会的,但你知道我如何解决我的问题吗?不幸的是,我不太精通cocos2d。Davie Montes,
spriteFrame
具有属性
纹理
。您无法使用(甚至无法访问)纹理图像数据进行操作。我最终要做的是将PRKit:()与batchnodes一起使用。它最初设置为使用CCTexture2D。DIT最初设置为使用CCTexture2D,我想将其转换为支持batchnodes。不,我没有尝试过,但我会感谢:)
CCTexture2D *cachedTexture = [[CCTextureCache sharedTextureCache] textureForKey:textureFileName];