我试图递增NSNumber
1在cocos2d每5秒,但由于某种原因,它不工作(可能是明显的错误)。 我使用的更新方法,但我认为这可能是放错了地方。 目前,它是只增加+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秒将是:
创建一个属性存储你的电话号码和一个计时器:
@property (nonatomic, assign) int bNumber;
@property (nonatomic, strong) NSTimer* timer;
然后初始化为500(我根据你希望它在500启动例如,假设)的数量,并创建定时器:
- (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];
}
}
然后创建一个具有增量的方法:
- (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的号码。 三角洲是自上次更新已经经过的毫秒数。 因此,例如属性将是:
@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);
}
}
我希望这有助于。 你所要做的是倒也干脆,所以我建议对的OBJ-C编程跳进制作游戏之前刷牙。
我认为方法[self schedule:@selector(methodName) interval:intervalValue];
是你的选择。
代码示例:
```
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;
}
```