2010-09-11 4 views
1

C'est encore moi avec un problème Cocos2D. :-DMéthode de planification Cocos2d dans NSObject

Je crée le personnage principal de mon prochain jeu en tant que sous-classe de NSObject. Cette classe a une propriété pour le Sprite, Spritesheet et tout ça. Mais maintenant j'ai le problème suivant.

Je souhaite planifier une méthode pour animer l'image-objet. Cette action qui devrait être programmée chaque seconde. Mais parce que j'utilise une sous-classe de NSObject pour contenir toutes mes données, je ne peux pas utiliser [self schedule:@selector(action:) interval:1.0]. Y a-t-il un autre moyen? Je ne veux pas utiliser NSTimer, parce que je ne peux plus vous le CCDirector pour casser la partie. Ce serait vraiment utile si vous pouviez m'aider. :-D

Sandro Meier

Répondre

3

Beaucoup de façons de la peau que le chat, mais voici quelques-unes:

  • CCNode au lieu de sous-catégorie NSObject et appeler [YourClass calendrier: intervalle:]
  • Exposez un sélecteur simplifié qui appelle en interne [self.sprite schedule: interval:]
  • Appel externe [yourClass.sprite schedule: interval:]
  • Appel interne [self.sprite schedule: i ntervalle:]
+0

Merci beaucoup. Je l'ai fait avec la première façon. Mais vos méthodes 3 et 4 ne fonctionnent pas, car les méthodes que je veux planifier ne sont pas dans CCSprite. Ils sont dans ma sous-classe NSObject. ;-) –

+0

Ah, eh bien, c'était juste une ligne directrice puisque je ne savais pas ce que vous essayiez réellement de planifier. Content que ça a marché. – jtalarico

+0

Ah d'accord. Merci quand même. : -D –

1
//SomeObject.h 
@interface SomeObject : NSObject 
{ 
} 
-(void) initObject; 
@end  

//SomeObject.m 
#import "cocos2d.h" 
#import "SomeObject.h" 
@implementation SomeObject 

-(id) init 
{ 
    return [super init]; 
} 

-(void) initObject 
{ 
    [[CCScheduler sharedScheduler] scheduleUpdateForTarget:self priority:0 paused:NO]; 
} 

-(void) update:(ccTime) dt 
{ 
} 

-(void) dealloc 
{ 
    [[CCScheduler sharedScheduler] unscheduleUpdateForTarget:self]; 
    [super dealloc]; 
} 
@end 

Regardez aussi ce

[[CCScheduler sharedScheduler] scheduleSelector:@selector(ping) forTarget:self interval:2.f paused:NO]; 

-(void) ping 
{ 
} 
+0

formater ceci. S'il vous plaît. –

+0

Merci pour la réponse. Je n'en ai plus besoin. Mais je pense que c'est bien d'avoir cette réponse ici. –