• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FLASH時間処理のミリ秒の除去と時、分の表示のさせ方。)

FLASH時間処理のミリ秒の除去と時、分の表示のさせ方

このQ&Aのポイント
  • FLASHにおいて、時間の計測をする際にミリ秒を除いた時、分、秒のみを表示する方法がわかりません。
  • 携帯の通話時間のように、ミリ秒を除いた時、分、秒の表示がしたいのですが、試した方法ではうまくいかず困っています。
  • 初心者なので、substr(-3, 3)の意味もわかりません。アドバイスをいただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

> ミリ秒を除いた時、分、秒のみの表示がしたい 論理的に順を追って考えると次のようなスクリプトになると思います。 まず, 新規ドキュメントを作成し, _root に 「timer」 というインスタンス名の付いたダイナミックテキストを用意して, フレームに書くスクリプトです。 ------------------------------------------------- // 実験のため適当に大きな負の数を入れておきます time1 = -3650000; // 1フレーム進む時間毎に随時実行 this.onEnterFrame = function() { // 経過時間(ミリ秒)の算出 mbyou = getTimer()-time1; // 時を算出 ji = Math.floor(mbyou/(60*60*1000)); // 分を算出 hun = Math.floor((mbyou-ji*60*60*1000)/(60*1000)); // 秒を算出 byou = Math.floor((mbyou-ji*60*60*1000-hun*60*1000)/1000); // テキストフィールド timer に 時:分.秒 を表示 _root.timer.text = ji+":"+hun+"."+byou; }; ------------------------------------------------- だいたいこんな感じになります。 > substr(-3, 3) > と記述など何のためにあるのかもわからない 上の物を動作させてもらえばわかるのですが, このままだと表示が, 「1:0.53」 とか 「1:1.5」 とかになってしまうのです。 それで問題なしとする場合はそれでかまいませんが, 桁が合ってないので不自然に見えたり桁が変わるごとに文字数が変動するので表示がガクガクになります。 「1:00.53」 とか 「1:01.05」 のように表示させたいのであれば, 分や秒が 1桁 のときに前に "0" を付ける必要が出てきます。 if文などで,  もし分が9以下の時    →分の前に "0" を付ける  もし秒が9以下のときは    →秒の前に "0" を付ける などと分岐をさせても良いのですが, それだとやたらスクリプトが長くなります。 そこで, 9以下であってもなくても,何でも良いからとりあえず前に "0" をつけて, 下○桁 の文字を取ってくるというようにすれば簡略化できます。 それが, > substr(-3, 3) です。 たとえば,分が 4 であったとします, "0" を付けて "04" にして "04" の下2桁分の文字を取ってくれば 表示は "04" になります。 たとえば,分が 54 であった場合でも, "0" を付けて "054" にして "054" の下2桁分の文字を取ってくれば 表示は "54" になります。 そういうことです。 ですから上のスクリプトも桁合わせをしたい場合は, 最後のこの行を↓ // テキストフィールド timer に 時:分.秒 を表示 _root.timer.text = ji+":"+hun+"."+byou; 次のように変更します↓ // テキストフィールド timer に 時:分.秒 を表示 _root.timer.text = ji+":"+("0"+hun).substr(-2, 2)+"."+("0"+byou).substr(-2, 2); そうすれば, if文なしで,自動的に「1:01.05」のような表示にすることができます。

yas_usa
質問者

お礼

ms = getTimer()-time1; ここまでの記述は試していたのですが、 (ms/(60*60*1000)); と記述すればよかったのですね。 計算の記述の仕方が間違っておりタイプが…エラーとなってしまって混乱していました。 この場合の、 .substrというのは、"0"に関係していたのですね、最後に付いていたのでミリ秒の桁数七日と思っておりました。 ASの記述の仕方がなにぶんほとんどperlやPHPなどを知らないものですからFLASHを作り始めて数日、格闘しておりました。 丁寧なご回答ありがとうございました。 いただいたご回答を踏まえて頑張ってみます。

関連するQ&A