如何正确加载cocos2d中的精灵?

时间:2012-03-21 20:04:49

标签: cocos2d-iphone

我的问题是: 我正在使用cocos2d为iOS制作游戏,这个游戏有很多级别,所以我必须创建一个加载场景来加载每个级别的精灵。 (比如新背景,怪物和其他东西) 但我不知道这个,我正在添加所有纹理包装器文件(.plist和.pvr.ccz) 在GameData.m中的sharedSpriteFrameCache上。 有谁知道这方面的好教程或可以帮我解决这个问题? 谢谢!

2 个答案:

答案 0 :(得分: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 :(得分:-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)];

上面的代码提供了可用于显示菜单特定状态的sprite的信息。而“MoveLeft”是我用来调用特定方法的方法选择器。

最后,您可以将m4对象添加到CCMenu并获得所需的输出...

希望它适合你。