-->

Incremenent的NSNumber每5秒 - 的Cocos2D(Incremenent NSn

2019-10-20 06:01发布

我试图递增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);   

}

Answer 1:

一个简单的方法来运行的东西每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编程跳进制作游戏之前刷牙。



Answer 2:

我认为方法[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;
}

```



文章来源: Incremenent NSnumber every 5 seconds - Cocos2d