0

我开始使用 Cocos2d 并且在过去的几天里一直在学习本教程(链接是第 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 (||) 它永远不会评估它的另一面,那为什么还要存在呢?

我非常了解该功能的作用,而不是它的作用方式。这个方法是假设根据它们的生成率生成小兵。确保波浪中的所有小兵都不会刚刚倾倒在屏幕上。而且该方法确实做得很好。

4

1 回答 1

1

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

于 2012-07-19T19:51:30.440 回答