2012-03-15 1 views
3

nilを返す: は、私はすべての画像をロードするために [[CCTextureCache sharedTextureCache] textureForKey:@ "myImageName"];デバイスがメモリ内だけでなく、私のアプリを持っていたときに私のアプリは奇妙な何かを作る、私は大きな画像がたくさんある

[[CCTextureCache sharedTextureCache] addImage:@"myImageName"]; 

を使用。 私は自分のテクスチャを変更するいくつかのスプライトがあります:すべてがうまくいけゲームの冒頭で

[[CCTextureCache sharedTextureCache] textureForKey:@"myImageName"]; 

を、すべての画像が表示されます。 しかし、私はより多くのスプライトを白く再生します。 sharedTextureCacheはメモリ警告のスプライトを自動的に削除しますか? はRootViewControllerに私が何かを変えので、表示されていない:

- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

は、なぜ私はテクスチャを見つけることができませんか?

これはcocos2dの問題ですか?あるいは、このことを行うための正しい方法は次のとおりです。

CCTexture2d *tex=[[CCTextureCache sharedTextureCache] textureForKey:@"myImageName"]; 
if(!tex) [[CCTextureCache sharedTextureCache] addImage:@"myImageName"]; 
[mysprite setTexture:tex] 

おかげ

+0

これは良い質問です。私はCCTextureを自分で使用することについて多くを見つけることができません。私は複数のテクスチャスプレッドシートを持っており、それらを使用したいと思います。 – mm24

答えて

0

方法purgeCachedDataはCCDirector.mであり:

-(void) purgeCachedData 
{ 
    [CCLabelBMFont purgeCachedData]; 
    [[CCTextureCache sharedTextureCache] removeUnusedTextures]; 
} 

とcocos2dテンプレートから作成された典型的なAppDelegate.mに、ある:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 
    [[CCDirector sharedDirector] purgeCachedData]; 
} 

結果:removeUnusedTexturesCCTextureCacheが呼び出され、キャッシュ内のすべてのテクスチャが削除されます。このテクスチャは、キャッシュ自体によってのみ保持されます。

関連する問題