iOS ゲーム (png ファイルと plist ファイル) からいくつかの画像リソースを取得しました。リソースは、テクスチャ パッカーによってパックされます。.png & .plist ファイルを png 画像に復元したいのですが、これを行う方法がわかりません。
user1716977
質問する
1232 次
1 に答える
1
cocos2d
少し前にそれを達成するためだけに小さなプロジェクトを書きました。基本的に を使用CCSpriteFrameCache
して plist 情報をロードし、それぞれspriteFrame
を反復処理して、目的のアトラスの部分を で「カット」しCCRenderTexture
ます。主なロジックは次のようになります。
-(id) init
{
// always call "super" init
// Apple recommends to re-assign "self" with the "super" return value
if( (self=[super init])) {
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:PLIST_FILE];
NSDictionary *frames = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrames];
for(id key in frames) {
//NSLog(@"key=%@ value=%@", key, [frames objectForKey:key]);
[self saveSpriteToFile:key inFolder:FOLDER_PATH];
}
}
return self;
}
-(void) saveSpriteToFile:(NSString *)name inFolder:(NSString *) folder {
CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:name];
CGSize spriteSize = [sprite contentSize];
float scale = 1;
int nWidth = spriteSize.width;
int nHeight = spriteSize.height;
nWidth *= scale;
nHeight *= scale;
[sprite setPosition:ccp(spriteSize.width / 2, spriteSize.height / 2)];
[sprite setScale:scale];
[self addChild:sprite];
CCRenderTexture* render = [CCRenderTexture renderTextureWithWidth:sprite.contentSize.width height:sprite.contentSize.height];
[render begin];
[sprite visit];
[render end];
//NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//NSString *documentsDirectory = [paths objectAtIndex:0];
[render saveToFile:[NSString stringWithFormat:@"%@/%@", folder, name] format:kCCImageFormatPNG];
[self removeChild:sprite cleanup:YES];
}
他の誰かが役に立つと思った場合に備えて、プロジェクト全体を github にアップロードしました.-
https://github.com/zuinqstudio/atlasSplitter
それが役に立てば幸い。
于 2013-08-19T17:11:29.223 に答える