6

私のアプリでは、ゲームセンターに時間を送信する必要があり、経過時間 - 100 分の 1 秒の形式で表示する必要があります。

00:00:00.00

これはリーダーボードに表示したい形式です。

私のアプリでは、次の形式で時間を取得しています

ss.SS

ss = 秒 SS = 100 分の 1 秒

ゲームセンターに送信する前に値を double に変換しました

double newScoreDouble = [newScore doubleValue];

しかし、ダブルスコアをゲームセンターに送信すると、int64_t 形式に変換するように求められます。しかし、それをその形式に変換すると、double 値の一部が失われます。

double intPart = 0;
double fractPart = modf(newScoreDouble, &intPart);
int isecs = (int)intPart;
int min = isecs / 60;
int sec = isecs % 60;
int hund = (int) (fractPart * 100);

int64_t time_to_send_through_game_center = min*6000 + (sec*100 + hund);

これは double を int64_t に変換する方法です

double 値全体をゲーム センターに送信し、経過時間 - 1/100 秒形式で表示する方法を教えてください。

ありがとう

4

1 に答える 1

13

私は前にこれをやったことがあります。スコアを 100 分の 1 秒の形式で録音する場合。送信する前に、秒を 100 倍します。

ユーザーが 1 分 44 秒 300 ミリ秒を記録したとしましょう: 1:44:30 = 104.3 秒。次に、GKScore オブジェクトの value プロパティを 104.3 * 100 = 10430に設定し、そのように送信します。

試してみる :)

于 2012-08-08T16:27:16.337 に答える