30分钟后补充生命

时间:2015-04-15 15:00:06

标签: ios objective-c sprite-kit nsdate nstimer

我在Spritekit编码游戏。在用户输掉游戏后,我想为用户的生活创造一种方式,以便在30分钟后补充 我创建了一个整数(称为Lives),每次用户输掉游戏时,它都会从整数中减去1 我只是不知道如何在30分钟过后补充用户的生活。我在NSObject助手类中编写了以下代码,但它无效。

-(void)ReplenishLives{
    NSDate *now = [NSDate date];
    NSTimeInterval oldDateTimeInterval = [now timeIntervalSinceReferenceDate];
    NSTimeInterval thirtyMinutes = 60 * 30;
    if (oldDateTimeInterval > thirtyMinutes) {
        Lives = 5;
    }
}

-(void)CheckTime{
    LifeTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(ReplenishLives) userInfo:nil repeats:YES];
}

1 个答案:

答案 0 :(得分:1)

一个主要问题是,您计算的oldDateTimeInterval不是上次用户丢失的时间(具体而言,您将其设置为等于从现在到2001年1月1日之间的时间间隔,格林尼治标准时间上午12:00。 timeIntervalSinceReferenceDate为您提供自2001年1月1日格林尼治标准时间中午12点以来的时间,这不是您想要的。

我建议您使用NSLog()来记录您的oldDateTimeInterval,并确保其按您希望的方式运行。这将在控制台中打印您放入其中的任何内容。例如:

NSLog(@"old time interval %f", oldDateTimeInterval);

然后,您可能想要做的是保存NSDate变量(可能在NSUserDefaults中),该变量将保留用户上次失去游戏的时间。然后,您可以从该日期进行比较,而不是现在使用的无关比较。