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++];
}
}