Esaminando la classe HelloWorldLayer.m notiamo che il sorgente non si occupa soltanto della logica del layer ma contiene anche del codice relativo al nostro sprite. Ad esempio non è corretto, dal punto di vista della programmazione a oggetti, che il nome del file ball.png sia presente all'interno di HelloWorldLayer. Con il crescere delle classi dedicate agli sprite questo approccio porterà a un aumento della complessità del codice che vi renderà sempre più difficile gestire il progetto.
Il suggerimento quindi è quello di definire una classe per ogni tipo di sprite presente nel gioco. Creiamo quindi la classe Ball che conterrà la logica dello sprite che stiamo utilizzando. Questa classe estenderà CCSprite.
- In Xcode selezionate il gruppo
MyFirstGamenelProject Navigator. - Scegliete
File > New > File... - Nella finestra che appare scegliere
cocos2d v2.xdal menu di sinistra. - Poi scegliete
CCNode classe quindiNext. - Digitate
CCSpritee premeteNext. - Assegnate il nome
Ballalla nuova classe e premeteCreate.
Ora nel Project Navigator sono apparsi 2 nuovi sorgenti: Ball.h e Ball.m. Selezionate Ball.m e create il metodo di classe ball come segue.
+ (Ball*)ball
{
Ball * ball = [[Ball alloc] initWithFile:@"ball.png"];
return ball;
}
Inoltre aggiungete la dichiarazione dello stesso metodo nel file Ball.h, proprio prima dell'istruzione @end.
+ (Ball*)ball;
Premete CMD+B per compilare. a questo punto potete tornare al metodo init di HelloWorldLayer.m e modificare la prima riga usando la nuova classe.
- (id)init
{
if (self = [super init]) {
Ball * ball = [Ball ball];
CGSize screenSize = [[CCDirector sharedDirector] winSize];
ball.position = ccp(screenSize.width/2 , screenSize.height/2);
[self addChild:ball];
}
return self;
}
Naturalmente non dimenticare di importare la nuova classe aggiungendo il seguente import a HelloWorldLayer.m:
#import "Ball.h"
Ora la logica relativa alla creazione dello sprite è stata racchiusa nella classe Ball. Se in futuro deciderete di utilizzare un'immagine diversa o vorrete aggiungere altra logica all'oggetto Ball potrete farlo senza dover modificare HelloWorldLayer o eventualmente altre classi che ne faranno uso.
CMD+R per verificare che tutto stia funzionando correttamente!
Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto:
