Как правильно загрузить спрайты в cocos2d?

Моя проблема в том, что я делаю игру для iOS с использованием cocos2d, и в этой игре много уровней, поэтому мне придется создать загрузочную сцену для загрузки своих спрайтов для каждого уровня. (например, новые фоны, монстры и другие вещи) Но я понятия не имею об этом, я добавляю все файлы упаковщика текстур (.plist и.pvr.ccz) в sharedSpriteFrameCache в GameData.m. Кто-нибудь знает хороший учебник для этого или может помочь мне решить эту проблему? Спасибо!

2 ответа

Решение

Таким образом, в основном вы хотите знать, как загружать и выгружать изображения по своему усмотрению. Как насчет

@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
}

... @конец

Вы можете использовать спрайт с помощью 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 и получить желаемый результат...

Надеюсь, это работает для вас.

Другие вопросы по тегам