11
2011
Creare animazioni utilizzando le texture (parte due)
Dopo aver creato la nostra textura nell’articolo precedente della categoria cocos2D è giunto il momento di mostrare come animare lo sprite.
In fondo al post trovi il video col risultato finale.
Creiamo un progetto con template cocos2D, io l’ho chiamato semplicemente animazione ed eliminiamo tutto il contenuto del metodo init di helloWorldLayer.m lasciando intatto la chiamata super init.
primo passo:
importiamo la textura e l’immagine nella cartella resource o se vi è più comodo sulla cartella principale del progetto cliccate con il tasto destro e create una nuova cartella “New Group” e rinominatela in “images”.
Secondo passo:
Prendiamo le dimensioni dello schermo del nostro device cosi da posizionare il nostro sprites dove vogliamo
CGSize screenSize = [CCDirector sharedDirector].winSize;
Terzo passo – il codice essenziale:
richiamiamo a codice la texture e l’immagine png creata con Zwoptex
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"finalfight.plist"]; CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"finalfight.png"]; [self addChild:spriteSheet];
Creiamo un NSMutableArray di nome *animFrames
NSMutableArray *animFrames = [NSMutableArray array];
e infine il ciclo che da vita all’animazione
for (int i = 1; i <= 5; i++) { NSString *file = [NSString stringWithFormat:@"ff%d.png", i]; CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:file]; [animFrames addObject:frame]; }
in quest’ultima porzione di codice l’immagine viene salvata nella variabile di nome *file e poi memorizzata nella cache del device.
Quarto passo – posizione e animazione
Ora l’ultimo step è quello di posizionare il nostro sprite al centro dello schermo e di animarlo.
Prima cosa stampiamo lo sprite usando il primo frame “ff1.png” della sequenza, poi gli diamo una posizione centrale utilizzando la dimensione dello schermo in larghezza screenSize.width diviso 2
e infine il metodo addChild che aggiunge la nostra immagine allo schermo con i parametri definiti.
CCSprite *player = [CCSprite spriteWithSpriteFrameName:@"ff1.png"]; player.position = ccp(screenSize.width / 2, 50.0f); [spriteSheet addChild:player];
ma ancora non abbiamo l’animazione.
CCAnimation *anim = [CCAnimation animationWithFrames:animFrames delay:0.10f]; CCRepeatForever *repeat = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:anim restoreOriginalFrame:NO]]; [player runAction:repeat];
Con CCAnimation creiamo la nostra animation, è possibile rallentare l’animazione aumentando il delay oppure velocizzandola diminuendo il valore del delay.
con CCRepeatForever diamo l’ordine all’immagine di continuare all’infinito
Quinto passo – aggiunte
In quest’altra porzione di codice mostro come poter aggiungere anche una movimento oltre che un animazione.
Per prima cosa modificare la posizione:
player.position = ccp(20.0f, 50.0f);
Cosi abbiamo il nostro sprite che inizia il suo ciclo vitale alla sinistra del monitor e non più centralmente come lo era prima.
Ora aggiungiamo il codice che manca al quarto passo:
CCAnimation *anim = [CCAnimation animationWithFrames:animFrames delay:0.05f]; CCRepeatForever *repeat = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:anim restoreOriginalFrame:NO]]; CCAction *moveAction = [CCMoveBy actionWithDuration:2.0f position:CGPointMake(500.0f,0.0f)]; [player runAction:repeat]; [player runAction:moveAction];
è stata aggiunta un’azione di movimento che permetterà allo sprites di attraversare tutto lo schermo.
Download Animazione
Loggati per scaricare il file
9 Commenti + Aggiungi commento
Log In
Articoli In Evidenza
Commenti recenti
- Zaen su Cocos2D: Creare un menu con effetti di animazione e di transizione
- Gabriele Carbonai su Cocos2D: Creare un menu con effetti di animazione e di transizione
- Gabriele Carbonai su Cocos2D: Creare un menu con effetti di animazione e di transizione
- Zaen su Cocos2D: Creare un menu con effetti di animazione e di transizione
- Zaen su Cocos2D: Creare un menu con effetti di animazione e di transizione
- Zaen su Cocos2D: Creare un menu con effetti di animazione e di transizione
- Gabriele Carbonai su Cocos2D: Creare un menu con effetti di animazione e di transizione
- Zaen su Cocos2D: Creare un menu con effetti di animazione e di transizione
Categorie
- Applicazioni utenti (5)
- Appunti di programmazione (9)
- box2D (21)
- cocos2D (44)
- Contest (3)
- Corona SDK (3)
- Developer Software (4)
- news (18)
- objective-c (2)
- open source (6)
- Problemi da sviluppatore (3)
- Video tutorial (19)




Articolo scritto da Gabriele Carbonai


























ma a me il tutorial non funziona mi da 2 errori rossi 2 gialli,ci sono dei termini deprecati
Termini deprecati? puoi postare gli errori? perché io quel codice l’ho scritto con xcode 4.2 che supporta ios 5 quindi mi sembra strano… l’ho anche testato ed è funzionante
mi puoi postare anche tutto il metodo init? cosi controllo
ciao, con CCRepeatForever ripeti lánimazione all’ ínfinito e per ripetere lánimazione un determinato numero di volte?
grazie!!!!!
Con CCRepeat ripeti una volta sola se poi ci aggiungi times e il valore ripeti l’animazione per il numero da te deciso. prova a commentare il codice CCRepeatForever e aggiungere il seguente codice:
CCRepeat *repeat = [CCRepeat actionWithAction:[CCAnimate actionWithAnimation:anim restoreOriginalFrame:NO] times:4];
qui viene ripetuta l’animazione 4 volte
Grazie molto gentile………. avevo fato una cosa simile, ma mettevo times: dentro le parentesi quadre e mi dava errore……..mi sapresti indicare se c’e'una documentazione online con tutte le classi e i rispettivi metodi…. grazie ancora!
c’è la documentazione ufficiale al momento http://www.cocos2d-iphone.org/wiki/doku.php/
mi da errore SIGABRT
sia nella versione scritta da me sia in quella che ho scaricato…
questo errore mi perseguitaa!! help!
Stampate la console degli errori, il log quando vi da l’errore SIGABRT