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 に答える