Animate CCTexture2D с использованием таблицы спрайтов

Я сделал спрайт-лист в Zwoptex, я знаю, что TexturePacker лучше, чем этот, но я только начал с cocos2d iphone, так что не покупал его.

Я сделал CCTexture2D, используя следующий код.

texture = [[CCTextureCache sharedTextureCache] addImage:@"1.png"];
    self.shaderProgram = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTexture];
CC_NODE_DRAW_SETUP();

И я использую этот объект CCtexture2D, чтобы нарисовать текстуру вокруг мягкого тела. Используя следующий код.

ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position | kCCVertexAttribFlag_TexCoords);
ccGLBindTexture2D([texture name]);
glVertexAttribPointer(kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, 0, textCoords);
glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_TRUE, 0, triangleFanPos);
glDrawArrays(GL_TRIANGLE_FAN, 0, NUM_SEGMENT+2);
ccGLEnableVertexAttribs( kCCVertexAttribFlag_Color);

Теперь я хочу оживить текстуру мягкого тела. Я знаю, как анимировать спрайт с помощью таблицы спрайтов. Но теперь я не совсем понимаю, как сделать CCTexture2D, используя spritesheet, и как я могу анимировать текстуру, используя разные изображения, как мы делаем в спрайтовой анимации?

Кто-нибудь может дать мне какое-либо направление в решении этого вопроса?

1 ответ

Решение

Прежде всего я хочу извиниться за этот вопрос. Я хочу поделиться своим кодом здесь. Я хочу оживить текстуру, которую я даю мягкому телу.

Я был в замешательстве, как я могу дать новое изображение объекту cctexture2d и повернуть его под углом предыдущих текстур. Но я узнал, что cocos2d iphone автоматически справляется с этим.

Я оживляю свой объект texture2d, просто давая ему последовательности изображений с задержкой. Код для этого показан ниже.

Вызванная функция

-(void)changeTexture1:(NSNumber*)i{
    texture = [[CCTextureCache sharedTextureCache] addImage:[NSString stringWithFormat:@"blink%@.png",i]];
}

Функция вызова:

-(void)makeAnimation{
    for (int i = 2; i<7; i++) {
        [self performSelector:@selector(changeTexture1:) withObject:[NSNumber numberWithInt:i] afterDelay:0.1*i];
    }
    int j = 1;
    for(int i=6;i>0;i--){
         [self performSelector:@selector(changeTexture1:) withObject:[NSNumber numberWithInt:i] afterDelay:0.1*6 + 0.1*j++];
    }
}
Другие вопросы по тегам