0

私がやろうとしているのは、プレイヤーがゲームで生き残った合計時間を合計することです。そのため、ゲームが始まるたびにタイマーを開始し、プレイヤーが死ぬとタイマーを終了します。これが起こるたびに、私はこの新しい時間を生きて過ごした合計時間に合計したいと思います。これは私のコードです:

int newTime = [newTimeLabel.text intValue];
int totalTime = [totalTimeLabel.text intValue];
int newTotalTime = newTime + totalTime;
totalTimeLabel.text = [NSString stringWithFormat:@"Total Time: %d",newTotalTime];

ただし、このtotalTimeLabel.textは、前の合計時間に追加されたnewTimeではなく、新しい時間のみを表示し続けます。何が間違っているのかわかりません。

私が達成しようとしていることの例:

試行1:
newTime = 5
totalTime = 0
newTotalTime = 5 + 0 = 5

試行2:
newTime = 7
totalTime = 5
newTotalTime = 7 + 5 = 12

試行3:
newTime = 3
totalTime = 12
newTotalTime = 3 + 12 = 15

等々...

4

1 に答える 1

1

問題は、UI 要素 ( Model-View-Controller の View ) を使用して、アプリケーションの状態/データ ( Model-View-Controller のモデル ) を保存しよしていることです。

適切なタイプのデータ変数を使用して合計累積時間と新しい時間を保存し、これらを合計して、UI ( View )とは完全に独立して追跡する必要があります。

これらの値が一時的なものである場合 (つまり、 Controllerの存続期間中のみ維持する必要がある場合) は、 Model部分全体をスキップして 2 つの変数だけを使用しても問題ありません (純粋なMVCではなく、実用的な観点から)。コントローラー。次に、それらを更新するたびに、ラベルを設定してビューも更新する必要があります。今のところ、このアプローチをお勧めします。

ただし、ユーザーがアプリを閉じて後で戻ってきた場合、それらの値が保持されていればいいと思いませんか? その場合、永続的なデータモデルを実装する必要があります。これらの値は、アプリのシャットダウン後でも取得できるようにそこに保存されます。

MVC設計パターンに関する情報を検索すると、アプリの設計と実装に非常に役立つことがわかります。それは、後であなたを噛むために戻ってくるばかげた間違いを避けるのに役立ちます:)

于 2012-06-13T01:17:33.327 に答える