質問ページ2 / 250


質問ページ2 / 250

質問ページ2/250

概要アニメーションとタイマーを同時に 続き
投稿者Parafla Quality
状態
カテゴリーParaFla!
投稿日2008-11-12 (水) 20:47:12
バージョン1.37

質問内容

アニメーションとタイマーを同時に起動は、経過時間のサンプルを追加して下さった方のおかげで、解決しました。

今回は、タイマーについて質問です。 タイマーの表示形式を、分、秒にしたいと思い、 他サイトさまのソースを参考にプログラムを作ったのですが…。 分は問題ないのですが、秒が60秒、70秒、とどんどん増え続けていきます。 私が打ったプログラムは、

onEnterFrame = function(){
       sec = Math.floor((getTimer() - time) / 1000);
	min = Math.floor(sec / 60) + ":";
	sec = sec - (min * 60);
};

です。 この状態で実行すると、秒はNaNと表示されてしまいます。 プログラムは論理的にあってると思うのですが…、何がいけないんでしょうか?

また、表示形式を00:00にしたいと思っています。 よければ、お願いします。

回答

  • 訂正 秒が60秒、70秒とどんどん増え続けるので、調べた結果、他サイトさまのソースにあった、sec = sec - (min * 60)を付け加えました。sec = sec - (min * 60)なしだと、秒が増え続けます。 -- 2008-11-12 (水) 20:50:35
  • Nanになるのは、minの時点で ":"を加えているからでしょうね
    また、割り算の余りを計算する剰余演算子%を使ってみましょう
    00:00表示させる変数をjikanとすると
    time = getTimer(); // スタートボタンのASに書いてもよい
    onEnterFrame = function(){
    	sec = Math.floor((getTimer() - time) / 1000);
    	min = Math.floor(sec / 60);
    	if(min%60 <10){min = "0" + min%60;}
    	else {min = min%60;}
    	if(sec%60 <10){sec = "0" + sec%60;}
    	else {sec = sec%60;}
    	jikan = min + ":" + sec;
    };
    どうなっているのか分析してみてください -- 2008-11-12 (水) 21:20:20
  • できました!仰るとおり、「:」が原因でした。全然思いつきもしませんでしたが…、言われてみるとsec = sec - (min * 60)でminに文字列が含まれているため、60を掛け算しようがないんですね。納得できました、ありがとうございました! -- 2008-11-12 (水) 22:13:43