2012-03-21 34 views
1

我的問題是: 我正在使用cocos2d製作iOS遊戲,並且此遊戲有很多關卡,所以我將不得不創建一個加載場景來加載我的每個關卡的精靈。 (如新的背景,怪物和其他東西) 但我不知道這一點,我在GameData.m的sharedSpriteFrameCache中添加了所有Texture Packer文件(.plist和.pvr.ccz) 。 有誰知道這個很好的教程或可以幫助我解決這個問題? 謝謝!如何正確加載cocos2d中的精靈?

回答

1

所以基本上你想知道如何加載和卸載圖像,你認爲合適。如何

@implementation Level1 

- (void) loadLevel 
{ 
    CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
    CCTextureCache* textureCache = [CCTextureCache sharedTextureCache]; 

    // Add the sprite frames. This will load the texture as well 
    [frameCache addSpriteFramesWithFile:@"monkey.plist"]; 
    [frameCache addSpriteFramesWithFile:@"player.plist"]; 
    [frameCache addSpriteFramesWithFile:@"enemy.plist"]; 

    // Load other textures that are going to be used 
    _myBackgroundTexture = [textureCache addImage:@"background.png"]; 
} 

- (void) unloadLevel 
{ 
    CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
    CCTextureCache* textureCache = [CCTextureCache sharedTextureCache]; 

    // Remove textures 
    [textureCache removeTexture:_myBackgroundTexture]; 

    // Remove sprite frames. This will load the texture as well 
    [frameCache removeSpriteFramesFromFile:@"monkey.plist"]; 
    [frameCache removeSpriteFramesFromFile:@"player.plist"]; 
    [frameCache removeSpriteFramesFromFile:@"enemy.plist"]; 

    // Though normally, id use frameCache removeUnusedSpriteFrames and 
    // textureCache removeUnusedTextures 
} 

... @end

-1

您可以通過CCMenuItem並且還通過使用菜單中的精靈,你需要點擊和移動到特定水平..以下是添加菜單項目圖像

CCMenuItem *m4 =[CCMenuItemImage itemFromNormalSprite:[CCSprite spriteWithSpriteFrameName:<#(NSString *)spriteFrameName#>] 
              selectedSprite:[CCSprite spriteWithSpriteFrameName:<#(NSString *)spriteFrameName#>] 
              disabledSprite:[CCSprite spriteWithSpriteFrameName:<#(NSString *)spriteFrameName#>] 
                target:self selector:@selector(MoveLeft)]; 

上面的代碼代碼提供了可用於顯示菜單特定狀態的精靈的信息。而「MoveLeft」是我用來調用特定方法的方法選擇器。

最後,你可以在M4對象添加到CCMenu並獲得所需的輸出...

希望它爲你工作。

+0

我爲我的英語很抱歉,但我的問題是,我的比賽有很多OS spritesheets,我想刪除或添加的spritesheets和釋放內存。 示例: 在我的遊戲的第1階段,它在spritesheet中有一個名爲stage1.pvr.ccz的背景Image stage1BG.png。 如何從sharedSpriteFrameCache中刪除stage1.pvr.ccz並加載另一個,釋放設備的內存。 再次,對不起我的英文(: – user1284366 2012-03-22 18:05:19

+0

)您可以使用代碼來創建未使用的spritesheet來釋放內存[CCSpriteFrameCache purgeSharedSpriteFrameCache];它還會顯示從緩存中釋放的spritesheet的數量。安慰 – Marine 2012-03-23 05:02:11