そのようなので、私は1つのビューにUIImage(Cocos2dゲームのスクリーンショット)を作成しています:このUIImageは、それが参照するファイルが変更された場合でも、なぜ更新されませんか?
:[UIImagePNGRepresentation(screenshot) writeToFile:savePath options:NSDataWritingAtomic error:&error];
その後、別の画面上で、私はそうのようなCocos2dメニュー内のすべてのスクリーンショットを表示
-(void) showGardens{
CCMenu* menu = [[CCMenu alloc] initWithItems:nil vaList:nil];
menu_items = [NSMutableArray arrayWithCapacity:gardens.count];
for(Garden* garden in gardens){
NSLog(@"Making menu item for garden %@", garden.name);
NSString *loadPath = [NSHomeDirectory() stringByAppendingPathComponent:garden.screen_shot_name];
CCMenuItem* save_button;
NSFileManager* fileManager = [NSFileManager defaultManager];
if([fileManager fileExistsAtPath:loadPath]){
save_button = [CCMenuItemImage itemFromNormalImage:loadPath
selectedImage:loadPath target:self selector: @selector(loadGarden:)];
}else{
save_button = [CCMenuItemImage itemFromNormalImage:@"default_screenshot.png"
selectedImage:loadPath target:self selector: @selector(loadGarden:)];
}
[save_button autorelease];
CCLabelTTF *label = [CCLabelTTF labelWithString:garden.name fontName:@"Marker Felt" fontSize:100];
// position the label on the center of the screen
label.position = ccp(300,555);
ccColor3B color = {0,0,0};
[label setColor: color];
[save_button addChild: label];
save_button.scale = 0.35;
[menu_items addObject: save_button];
}
//make sure its not just overwriting one child.
for(CCMenuItem* menu_item in menu_items){
[menu addChild: menu_item];
[menu_items retain];
}
[menu alignItemsHorizontallyWithPadding:80.0];
menu.position = ccp(700,500);
[self addChild: menu];
}
しかし、スクリーンショットが後で置き換えられると、このビューでは、このビューがロードされるたびに[self showGardens]を呼び出すように指定することはできますが、このビューでは更新されません。私がアプリから完全に出て(そして強制終了しても何でも)、それを再び開くと、スクリーンショットは正しいです。
メモリに問題がありますか?または、アプリケーションが実行中に何らかの形ですべてのイメージをキャッシュし、完了したときにのみリロードしますか?
画像のような場所に格納されている:
の/ var /モバイル/アプリケーション/ 77DE5CC9-93DE-4346-A8AE-89F38036F718 /ドキュメント/サンプル Garden17.png
あなたの画像はCocos2Dによってキャッシュされることはありますか? [[CCTextureCache sharedTextureCache] removeAllTextures]を使用しますか?何か影響はありますか? – ggfela