每5秒增加一个NSNumber – Cocos2d

我试图在Cocos2d中每5秒增加1个NSNumber ,但由于某种原因,它不工作(可能是明显的错误)。 我正在使用更新方法,但我认为这可能是错误的地方。 目前它只添加+1次。 我需要它每隔5秒不断地做这个:

 -(void) update: (CCTime) delta { // Save a string: NSNumber *anInt = [NSNumber numberWithInt:500]; NSNumber *bNumber = [NSNumber numberWithInt:[anInt intValue] + 1]; NSLog(@"Update Number%@",bNumber); } 

每5秒钟运行一次简单的方法是:

创build一个存储你的号码和一个计时器的属性:

 @property (nonatomic, assign) int bNumber; @property (nonatomic, strong) NSTimer* timer; 

然后将数字初始化为500(我假设根据您的示例,您希望它从500开始)并创build计时器:

 - (instanceType)init { self = [super init]; if (self) { self.bNumber = 500; self.timer = [NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(incrementScore:) userInfo:nil repeats:YES]; } } 

然后创build一个方法,增量:

 - (void)incrementScore:(NSTimer *)timer { self.bNumber++; NSLog(@"Number = %d", self.bNumber); } 

完成后不要忘记使计时器无效:

 - (void)dealloc { // If not using arc don't forget super dealloc [super dealloc]; [self.timer invalidate]; self.timer = nil; } 

这是一个方法。 如果你想在cocos2d中使用更新方法,那么你需要跟踪累积的增量。 一旦该值在5秒内达到或超过了总毫秒数,那么你就给数字加1。 Delta是自上次更新以来经过的毫秒数。 所以例如,属性将是:

 @property (nonatomic, assign) int bNumber; @property (nonatomic, assign) CCTime totalDelta; 

然后在更新中,您可以执行以下操作(每秒有1000毫秒):

 - (void)update:(CCTime)delta { const CCTime FiveSeconds = 5000.0f; self.totalDelta += delta; if (self.totalDelta >= FiveSeconds) { self.totalDelta = 0; self.bNumber++; NSLog(@"Number = %d", self.bNumber); } } 

我希望这有助于。 你正在做的事情很简单,所以我build议在开始制作游戏之前先刷上Obj-C编程。

我想方法[self schedule:@selector(methodName) interval:intervalValue]; 是你的select。

代码示例:

“`

 static CGFloat playTime = 0.0; @implementation GameScene { } -(void)onEnter { CCLOG(@"on enter"); [self schedule:@selector(runTimer) interval:5.0]; [super onEnter]; } -(void) runTimer { playTime += 1; } 

“`