私のゲームではいくつかのテーマを作りたいと思います。 (doodle jumpのように) フレーム名は異なるテーマで同じで、私はplistファイルを変更する必要があると思います。cocos2dスプライトフレームキャッシュは変更できません
Helper.mで:appdelegateで
+(void) addCache {
ThemeTypes themeType = [Helper getCurrentThemeType];
if (themeType == ThemeTypeDefaultTheme) {
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"block.plist"];
}
else if (themeType == ThemeTypeJungleTheme) {
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"jungle1.plist"];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"jungle2.plist"];
}
else if (themeType == ThemeTypeXmasTheme) {
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"xmas1.plist"];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"xmas2.plist"];
}
else if (themeType == ThemeTypeWhiteTheme) {
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"blockwhite.plist"];
}
else if (themeType == ThemeTypeOuterSpaceTheme) {
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"outer1.plist"];
}
else if (themeType == ThemeTypeSkyTheme) {
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"sky1.plist"];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"sky2.plist"];
}
else {
}
}
+(void) purgeCache {
[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
[CCSpriteFrameCache purgeSharedSpriteFrameCache];
}
+(void) refreshCache {
[Helper purgeCache];
[Helper addCache];
}
、私はテーマを選択するときに、私のShopSceneで、 'リフレッシュキャッシュは' と呼ばれます、 'addcache' と呼ぶだろう。
このコードは私のBlockCacheである(「通常ブロック」はゲーム内のブロックのようなもの」です)
CCSpriteFrame* frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"normal.png"];
batch = [CCSpriteBatchNode batchNodeWithTexture:frame.texture];
[self addChild:batch];
( 『normal.png』 @ごとのplistファイルに存在していることに注意してください。同じ名前を使用します。
が、テーマを変更した後、「ブロックキャッシュ」まだ元の画像を使用するが、背景などは(私が使用BG = [CCSprite spriteWithSpriteFrameName:]正しいものを使用しています。方法
UPDATE:選択した後テーマ、私はゲームを殺すし、それを再起動、それはfiを動作させるne。 Appdelegateからの呼び出しは正常ですが、私は実行時にキャッシュを変更することはできません。
テーマが異なる場合、DefaultThemeのように別のものを使用することがあります。テクスチャキャッシュとフレームキャッシュの両方に@ "junglebg.png"がありません。テーマを変更した後、FrameNameを使用したい場合もありますDefaultTheme。 (フレーム名は同じですが、ファイルのセットは異なります)。 – OMGPOP
私はspriteWithFile:@ "junglebg.png"を直接使用しています。サイズは960x640ですが、1024x1024のメモリが必要ですか?しかし、私はzwoptexを使用する場合は、私は2つの1024×1024シートが他のスプライトのために、空き領域の多くが必要です。 – OMGPOP