我开始使用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(||),它永远不会评估它的另一面,那为什么会这样呢?
我很清楚这个功能的功能与其如何做的不同。这种方法假设根据它们的生成率产生小兵。确保波浪中的所有小兵都不会被丢弃在屏幕上。而且该方法确实做得很好。
答案 0 :(得分:1)
它是 静态 var ...第一个语句仅在第一次调用gameLogic时设置为0。在每次后续调用中,lastTimeTargetAdded都具有在上一次调用中设置的值。