Per gestire il "tocco" dell'utente è necessario aggiungere dei delegati tramite lo shareddispatcher ed il metodo addTargetedDelegate. SwallowsTouches se è impostato su true impedisce la propagazione degli eventi ad oggetti che sono posizionati al di sotto.
Fondamentale ricordarsi di richiamare i metodi super sia in entrata che in uscita altrimenti molte cose non funzioneranno come previsto.
-(void)onEnter {In uscita è buona norma rimuoverlo attraverso il metodo removeDelegate.
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:TRUE];
[super onEnter];
}
-(void)onExit{
[[CCTouchDispatcher sharedDispatcher] removeDelegate:self];
[super onExit];
}
Il set di azioni è tra gli strumenti più comodi che cocos2d fornisce. L'utilizzo è semplice e rapido.
[labelimg runAction:[CCTintTo actionWithDuration:tempo red:230 green:231 blue:232]];
Ecco alcune delle azioni disponibili
- Move actions
- CCMoveTo
- CCMoveBy
- CCJumpBy
- CCBezierTo
- CCBezierBy
- CCPlace
- Scale actions
- CCScaleTo
- CCScaleBy
- Rotation actions
- CCRotateTo
- CCRotateBy
- Visible actions
- CCShow
- CCHide
- CCToggleVisibility
- CCBlink
- Opacity actions
- CCFadeIn
- CCFadeOut
- CCFadeTo
- Colour actions
- CCTintTo
- CCTinyBy
Ulteriori effetti sono applicabili tramite l'utilizzo delle azioni che agiscono sulla grid. Ulteriori informazioni sul blog ufficiale di cocos2d.
È possibile combinare tra loro azioni con CCSequence, oppure assegnare un movimento particolare agli oggetti tramite l'utilizzo di ease action
CCAction *action = CCEaseOutSine actionWithAction:[CCMoveTo actionWithAction:[CCMoveTo actionWithDuration:1 position:ccp(300,300)]];
[sprite runAction:action];
Infine CCCallFunc permette di richiamare funzioni alla fine, all'inizio di una azione
[ready runAction:[CCSequence actions:
[CCDelayTime actionWithDuration:1],
[CCSpawn actions: [CCFadeIn actionWithDuration:0.4], [CCScaleTo actionWithDuration:0.4 scale:1.2],nil],
[CCDelayTime actionWithDuration:0.2],
[CCFadeOut actionWithDuration:0.4],
[CCCallFuncN actionWithTarget:self selector: @selector(removeSprite:)],nil]];
Per cambiare dinamicamente le immagini è sufficente questa riga:
[sprite setTexture:[[CCTextureCache sharedTextureCache]addImage:_path_img]];