lastTimeTargetAdded如何不是0

时间:2012-07-19 18:05:56

标签: cocos2d-iphone

我开始使用Cocos2d,过去几天一直在处理这个tutorial(链接是第9部分)。 在阅读消息来源并试图理解它时,我已经达到了一个对我没有任何意义的部分。

-(void)gameLogic:(ccTime)dt {

   static double lastTimeTargetAdded =0;
    double now = [[NSDate date] timeIntervalSince1970];
    AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    if(lastTimeTargetAdded == 0 || now - lastTimeTargetAdded >= delegate.curLevel.spawnRate) {
        [self addTarget];
        lastTimeTargetAdded = now;
    }

}

通过这个召唤:

    [self schedule:@selector(gameLogic:) interval:0.2];     

事实上,每次函数运行时都会创建并设置lastTimeTargetAdded,它是如何不是0的?如果是这样的话lastTimeTargetAdded = now的重点是什么?如果if语句是OR(||),它永远不会评估它的另一面,那为什么会这样呢?

我很清楚这个功能的功能与其如何做的不同。这种方法假设根据它们的生成率产生小兵。确保波浪中的所有小兵都不会被丢弃在屏幕上。而且该方法确实做得很好。

1 个答案:

答案 0 :(得分:1)

它是 静态 var ...第一个语句仅在第一次调用gameLogic时设置为0。在每次后续调用中,lastTimeTargetAdded都具有在上一次调用中设置的值。