1

重複の可能性:
CCSpriteFrame を CCTexture2D (Cocos2d) に変換する方法

CCSpriteFrameCache から取得した 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];
}     

しかし、1 つのフレームだけでなく、スプライトシート テクスチャ全体を表示する画面では。

このリンクにも同様の質問があります: CCSpriteFrame を CCTexture2D (Cocos2d) に変換する方法です が、このリンクへの回答が役に立ちませんでした。

私もこれを試しましたが、同じ結果が得られました:

-(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];

}
4

2 に答える 2

0

このコードは私にとってはうまくいきます(cocos2d 2.0)

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"walk_cpu_fighter_asleep.plist"];
CCSpriteFrame *fr = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"walk_cpu_fighter_asleep0001.png"];
CCSprite *spr = [CCSprite spriteWithSpriteFrame:fr];

CGPoint p = [[GEPlayGrid sharedPlayGrid] positionForTileAtX:1 andY:1];

spr.position = p;
[[GameEngine sharedGameEngine].mapProvider.mapUnitsLayer addChild:spr];

spriteWithSpriteFrame コンストラクターは、スプライト フレームに含まれるクロップ仕様に従って適切にクロップします。テクスチャは絶対に必要ですか? CCSprites を使用できますか? コード内の自己とその拡張内容を推測するのは困難です:) ... しかし、initWithSpriteFrame:body:original を使用することもできます。

于 2012-10-18T13:40:22.000 に答える
0

試しましたか:

-(void) addSpriteFramesWithFile:(NSString*)plist textureFile:(NSString*)textureFileName

それとその後:

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

?

于 2012-11-19T15:21:06.620 に答える