我开始使用 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 (||) 它永远不会评估它的另一面,那为什么还要存在呢?
我非常了解该功能的作用,而不是它的作用方式。这个方法是假设根据它们的生成率生成小兵。确保波浪中的所有小兵都不会刚刚倾倒在屏幕上。而且该方法确实做得很好。