2016-09-08 7 views
0

私は、ゲームのように、ユーザーがタスクを完了するために必要な時間を測定したいと思います。これは簡単です:開始と終了のNSDateを取得し、その差を計算します。アプリがバックグラウンドにある経過時間を無視する経過時間を測定する方法はありますか?

しかし、電話の着信のように、アプリがバックグラウンドで過ごす時間を無視したいのですが、どうすればいいですか? NSTimerは多かれ少なかれ目覚まし時計です。私はストップウォッチのようなものが必要です。

I でし、たとえば、毎秒を発射し、秒をカウントし、アプリがバックグラウンドに移行し、タイマーを無効にし、アプリが再進入するときにそれをアクティブにするNSTimerを設定前景が、これは行き過ぎと思われます。

私は見落とした簡単なアプローチはありますか?

答えて

0

SpriteKitゲームで実行されるゲームループがあります。

ゲームが一時停止すると、ゲームループが一時停止します。

各ループの経過時間を計算し、累積時間を加算します。

+0

私はスプライトキットを使用していません。 「ゲーム」はユーザーの入力に対してのみ進んでいます。 「ゲームは実行中」の状態ですが、プレーンバニラのCocoaイベントループ以外のゲームループはありません。 –

+0

@JoeVölkerの場合は、アプリケーションに応答して、バックグラウンド通知に移行しました。ゲームを単一のイベントとして扱うのではなく、バックグラウンドに移動するゲームを一時停止するような一連の1つ以上のイベントとして処理してください...そして、各イベントの時間を測定し、それらを一緒に追加してください。 – Fogmeister

関連する問題