Flashでイベントまでのカウントタイマーを作成したい

このQ&Aのポイント
  • Flashでイベントまでのカウントタイマーを作成しています。1桁の数字を2桁で表示したい。
  • 使用ソフトは『FlashMX』で、最終的には携帯電話での使用を考えています。
  • 似た質問を参考に1週間ほど試行錯誤してみましたが、解決できませんでした。
回答を見る
  • ベストアンサー

【Flash】時間表示を2桁にしたい

Flashでイベントまでのカウントタイムタイマー(?)を作成しています。 途中までは他の質問等を参考になんとかできたのですが、 最期に行き詰ってしまいました。 ダイナミックテキストでインスタンス名は 日数が「event_date」、 時間が「event_hour」、 分が「event_min」、 秒が「event_sec」となっています。 イベント開催日時を2008年4月1日午前10時とし、 1フレームに以下のスクリプトを記述しました。 // _root.createEmptyMovieClip("date_cnt", 0); date_cnt.onEnterFrame = function() { date_obj = new Date(); yy = date_obj.getFullYear(); mm = date_obj.getMonth(); dd = date_obj.getDate(); hour = date_obj.getHours(); min = date_obj.getMinutes(); ss = date_obj.getSeconds(); eventUTC = Date.UTC(2008, 4-1, 1, 10, 0, 0); todayUTC = Date.UTC(yy, mm, dd, hour, min, ss); remain = eventUTC-todayUTC; _root.event_date = Math.floor(remain/86400/1000); remain -= _root.event_date*86400*1000; _root.event_hour = Math.floor(remain/3600/1000); remain -= _root.event_hour*3600*1000; _root.event_min = Math.floor(remain/60/1000); _root.event_sec = Math.floor((remain-_root.event_min*60*1000)/100 // この状態ですと各項目が1桁になった場合に見栄えが悪いので 1桁になった場合には「09」「08」「07」・・・と2桁で表示したいと考えています。 どのようにすれば1桁の数字を"0"をつけた2桁で表示できるのでしょうか? 使用ソフトは『FlashMX』です。 最終的には携帯電話での使用を考えています。 似た質問を参考に1週間ほど試行錯誤してみましたが、解決できませんでした。 よろしくお願いいたします。

  • Flash
  • 回答数1
  • ありがとう数9

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

  • ベストアンサー
  • taku2888
  • ベストアンサー率60% (15/25)
回答No.1

あんちょこに・・・ if (_root.aaa.text < 10) { _root.aaa.text = "0"+_root.aaa.text; } みたいな・・・

tetris_red
質問者

お礼

ご回答ありがとうございます。 そして早速試したところ、できました! これからも精進します。 本当にありがとうございました。

関連するQ&A

  • カウントダウン スクリプト記述について

    初めまして。 どなたか詳しい方、助けていただけると幸いです。 カウントダウンのFlashをただいま作成中なのですが、設定した日付時間が0になった時、あらかじめ作っておいた画像(本日~~~です)に変えたいときどのように記述するのが一番宜しいのでしょうか? フレームは全部で20 終了後画像を21フレーム目に置いて、時間が来るとそちらに移行できるようにしたいのですが、最初から21までいってしまいます(汗 アクションスクリプトは1フレーム目にあります。 ---------------------------------------------------------------- _root.createEmptyMovieClip("date_cnt", 0); date_cnt.onEnterFrame = function() { date_obj = new Date(); yy = date_obj.getFullYear(); mm = date_obj.getMonth(); dd = date_obj.getDate(); hour = date_obj.getHours(); min = date_obj.getMinutes(); sec = date_obj.getSeconds(); eventUTC = Date.UTC(2007, 8-1, 8, 10, 0, 0); todayUTC = Date.UTC(yy, mm, dd, hour, min, sec); remain = eventUTC-todayUTC; _root.event_date = Math.floor(remain/86400/1000); remain -= _root.event_date*86400*1000; _root.event_hour = Math.floor(remain/3600/1000); remain -= _root.event_hour*3600*1000; _root.event_min = Math.floor(remain/60/1000); _root.event_sec = Math.floor((remain-_root.event_min*60*1000)/1000); }; ---------------------------------------------------------------- ただいま上記のような記述になっております。 http://webstudiov.com の方にflaファイルをダウンロードできるようにしておきました。 どなたかご指導のほど宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASHでのカウンターの残り日数を正確に表示できません

    FLASH初心者です。わかりにくい説明かもしれませんが、よろしくお願いいたします。 http://oshiete1.goo.ne.jp/qa1192628.html こちらのページを参考にさせていただき、FLASHでカウンターを作成しました。 2010年1月16日をイベント日として、残り日数を表示させたいのですが、自分が作成したカウンターに表示される日数が正確なものではないようです。 自分でいろいろ試してみたのですが、2009年4月30日までは、正確に表示されるのですが、5月1日以降になると残日数がいきなり増えてしまいます。 下記に自分が作りました、カウンターのスクリプトを記しますので、間違いがありましたらご教示いただけますようお願いいたします。 //現在の日付および時刻を取得 yy = date_obj.getFullYear(); mm = date_obj.getMonth(); dd = date_obj.getDate(); hour = date_obj.getHours(); min = date_obj.getMinutes(); sec = date_obj.getSeconds(); //1970年1月1日からイベントまでの時間をミリ秒で取得 eventUTC = Date.UTC( 2009 , 1 - 1 , 16 , 17 , 30 , 0 ); //1970年1月1日から今日までの時間をミリ秒で取得 todayUTC = Date.UTC( yy , mm , dd , hour , min , sec ); //画像で数字を表示できるようにする with( _root.display_clip ) { /*日数を2桁で表示*/ //100の位の算出と表示 temp = Math.floor( _root.display_clip.event_date / 100 ); ddd.gotoAndStop( temp + 1 ); //10の位の算出と表示 temp = Math.floor( _root.display_clip.event_date / 10 ); dd.gotoAndStop( temp + 1 ); //1の位の算出と表示 d.gotoAndStop( ( _root.display_clip.event_date % 10 ) + 1 ); 必要部分かと思う箇所だけ掲載しました。自分で修正した部分は、イベント日や日数を3桁表示にするという部分などです。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASHでコンパイルエラーが出てしまいます

    FLASH(CS5)にてカウントダウンを作っています。 (作っていますといっても、ネットでいろいろ調べて引用したものです:引用したサイト様はFLASH8で作成したようです) しかしながら、 以下のAS(2.0で作成)を記載してダイナミックテキストに表示させようとしてもコンパイルエラーが出てしまいます。 コンパイルエラー内容 シーン=シーン 1, layer=ao, frame=1、行 7 シンタックスエラー ※該当箇所:var currentTime = today.getTime(); シーン=シーン 1, layer=ao, frame=1、行 6 演算子 '=' は、オペランドの前に来る必要があります。 ※該当箇所:var today:Date = new Date(); AS内容 this.onEnterFrame = function(){ /* ------------------------------------------------------------     ●現在のローカル時間を取得     ●1970年1月1日0時から現在時刻までのミリ秒を取得 ------------------------------------------------------------ */     var today:Date = new Date();     var currentTime = today.getTime(); /* ------------------------------------------------------------     ●カウントダウンの日付を指定     ※この場合は「2012年7月14日 0時0分0秒」とする ------------------------------------------------------------ */     var targetDate:Date = new Date(2012,6,14,0,0,0); /* ------------------------------------------------------------     ●1970年1月1日0時からカウントダウンの日付までのミリ秒を取得 ------------------------------------------------------------ */     var targetTime = targetDate.getTime(); /* ------------------------------------------------------------     ●【カウント日時】-【現在日時】=【残り時間】 ------------------------------------------------------------ */     var timeLeft = targetTime - currentTime; /* ------------------------------------------------------------     ●残り時間をそれぞれ「秒、分、時、日」に変換 ------------------------------------------------------------ */     var sec = Math.floor(timeLeft/1000);     var min = Math.floor(sec/60);     var hrs = Math.floor(min/60);     var days = Math.floor(hrs/24); /* ------------------------------------------------------------     ●カウントダウン開始     ※残り時間が過ぎていれば(マイナスであれば)カウントダウン停止&数字を空にする ------------------------------------------------------------ */     if(timeLeft <= 0){         delete this.onEnterFrame;         _root.time_days.text = _root.time_hrs.text = _root.time_mins.text = _root.time_secs.text = "";         /* --------------------------------------------------------         カウント終了後、動作させたい場合はココに追記してください         ※ページ移動なら、getURL("http://www.google.co.jp/"); など         -------------------------------------------------------- */     } else {         days = string(days);         //秒が1桁なら2桁に変換         sec = string(sec % 60);         if(sec.length < 2){             sec = "0" + sec;         }         //分が1桁なら2桁に変換         min = string(min % 60);         if(min.length < 2){             min = "0" + min;         }         //時が1桁なら2桁に変換         hrs = string(hrs % 24);         if(hrs.length < 2){             hrs = "0" + hrs;         }         var counter_days:String = days;         var counter_hrs:String = hrs;         var counter_mins:String = min;         var counter_secs:String = sec;         _root.time_days.text = counter_days;         _root.time_hrs.text = counter_hrs;         _root.time_mins.text = counter_mins;         _root.time_secs.text = counter_secs;</span>     } } 作成している全体図は タイムラインにAS用のレイヤーを作成してそこに上記のASを入れています。 その下のレイヤーにメインとなるレイヤーにダイナミックテキストを4つ(日、時、分、秒) その下のレイヤーに、装飾画像をいれています。 ダイナミックテキストのインスタンス名とASの出力する名前は間違っておりません。 ネットで調べて、コピペでできるはずとおもったのですが、「コンパイルエラー」出てしまい、 修正できず壁に当たっております。 御手数ですが、どなたか、ご教授下さい。 よろしくお願いいたします

    • ベストアンサー
    • Flash
  • javascriptによるカウントダウンタイマー制作

    只今、javascriptでカウントダウンタイマーを制作しています。 ボタンをクリックすると動いているカウントダウンタイマーに10秒追加するようにしたいのですが、いろいろためしてみたのですがうまくいきません。散々悩んでいるうちに2日もたってしまいました。 御存じの方、いらっしゃいましたらどうか教えていただけませんでしょうか? <script type="text/javascript"> <!-- if (window.attachEvent){ window.attachEvent('onload', showday); }else { window.addEventListener('load', showday , false); } function settime1(){ var year =2011; //年 var mon =4; //月 var day =2; //日 var time =20; //時 var min = 20; //分 var sec = 15; //秒 var xday = new Date(year,mon-1,day,time,min,sec); //基準になる年月日 return xday; } function showday() { var nowday = new Date(); var xday = new settime1(); var passtime= xday.getTime()-nowday.getTime(); //今から基準になる日までの経過時間 1/1000秒単位 var cnt_day = Math.floor(passtime/(1000*60*60*24)); // カウントダウン表示 (日にち) の取得 passtime = passtime -(cnt_day*(1000*60*60*24)); // 経過秒から(日にち)を引く var cnt_hour = Math.floor(passtime/(1000*60*60));// カウントダウン表示 (時) の取得 passtime = passtime -(cnt_hour*(1000*60*60)); // 経過秒から(時)を引く var cnt_min = Math.floor(passtime/(1000*60)); // カウントダウン表示 (分) 取得 passtime = passtime -(cnt_min*(1000*60));// 経過秒から(分)を引く cnt_sec = Math.floor(passtime/1000);// カウントダウン表示 (秒) 取得 passtime = passtime -(cnt_sec*(1000)); // 経過秒から(秒)を引く var cnt_millisec = Math.floor(passtime/10); // カウントダウン表示 (100/1秒) 取得 // 分、秒、ミリ秒を2桁で表示する。 if(cnt_min<10){cnt_min = '0' + cnt_min;} if(cnt_sec<10){cnt_sec = '0' + cnt_sec;} if(cnt_millisec<10){cnt_millisec = '0' + cnt_millisec;} if((xday - nowday) > 0){ document.tbox.dspday.value = cnt_hour+":"+cnt_min+":"+cnt_sec; }else { document.tbox.dspday.value = "終了" } timerID = setTimeout('showday()', 1000); } </script> </head> <body> <form name="tbox" action="#"> <input name="dspday" id="dspday" type="text" style="position:absolute; top:475px;left:55px; font-size : 25px; z-index:3; color:navy; background:transparent; border-width : 0px ;border-style : solid;font-weight :bold ;" size="45" /> <input name="dspdaybtn" type="button" onClick="" value="10秒追加" style="position:absolute; top:510px; left:70px; z-index:4;"/> </form>

  • 残り時間カウントダウン表示 『あと○時間△分□秒』

    CGIゲーム内であるイベントが発生してから12時間後に新イベントが自動発生するスクリプトを作りたいのですが ネット検索をしても残り日数表示しかなくてサンプルがないので創ってみたのですが <body onLoad="count()" onUnload="clearTimeout()"> $ENV{'TZ'} = "JST-9"; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); <=現在の時間 $date="0,0,11,3,0,107,0,27,0 485,197,854,"; <=保存されたプレイベント発生時間 foreach($date){ ($sc,$mi,$ho,$md,$mo,$ye,$wd,$yd,$isd)=split(/,/); } print <<"EOM"; <SCRIPT language="JavaScript"> <!-- cnt = $sc-$sec; cnt1=$mi-$min; if($ho>$hour){cnt2=$ho-$hour-12;} else{cnt2=$ho-$hour+12;} if(cnt2>12){cnt2=cnt2-12;} if(cnt<0){cnt=cnt+59; cnt1=cnt1-1;} if(cnt1<0){cnt1=cnt1+59; cnt2=cnt2-1;} if(cnt2<0){cnt=0;cnt1=0;cnt2=0;} function count(){ document.form.box.value = cnt2+"時間"+cnt1+"分"+cnt+"秒"; cnt--; if(cnt<0){cnt=cnt+60; cnt1=cnt1-1;} if(cnt1<0){cnt1=cnt1+60; cnt2=cnt2-1;} if(cnt2<0){cnt=0;cnt1=0;cnt2=0;} if(cnt2 >=0) { if(cnt1 >=0) { if(cnt >=0) { setTimeout("count()",1000); }}} } //--> </SCRIPT> <FORM name="form"> あと<INPUT type="text" name="box" size="17">です </FORM> EOM とりあえず表示はできた(と思う)のですがもっと楽で確実な方法はありますでしょうか?(モジュールとかは使わずに) または上記のスクリプトすぐに思いつかなかったのでtime()で計算してたのですが 『残り53495秒』(適当)のような表記方法しか分かりません これを○時間△分□秒のように変換してカウントダウンできるでしょうか? localtime()、time()どちらでもいいのでご意見お願いします

  • ソート(?)がうまくいかない。

    こんにちは、今おみくじスクリプトを作成しているのですが、うまくいかない点があります。 大吉や吉といったランクごとに、健康運や恋愛運といった6つの部分が◎○△×のどれかにランダムでなるというスクリプトをつくりました、うまく実行はされるのですが、処理が重く、IEで「実行をとめますか?」とエラーが出ています。 何か、おかしな点があれば、教えていただけませんか? for(cnt=0;cnt<w.ura;cnt++) { j = Math.floor(Math.random()*i); if(utc[j]==0) utc[j] = "◎"; else{ cnt -=1; } } for(cnt=0;cnt<w.urb;cnt++) { j = Math.floor(Math.random()*i); if(utc[j]==0) utc[j] = "○"; else{ cnt -=1; } } for(cnt=0;cnt<w.urc;cnt++) { j = Math.floor(Math.random()*i); if(utc[j]==0) utc[j] = "△"; else{ cnt -=1; } } for(cnt=0;cnt<w.urd;cnt++) { j = Math.floor(Math.random()*i); if(utc[j]==0) utc[j] = "×"; else{ cnt -=1; } } w.ura等は、ランクごとの◎などの数が格納されたストラクトです。 やっていることは、◎の数まわして、空の配列であれば、◎をいれるといったことです。 よろしくご教授ください。

  • setTimeout()が使えない

    今、JavaScriptでリアルタイムで動く時計を作ってるのですが、setTimeoutが動かないため使えません。 時刻は表示するのですが、自動更新してくれません。 JavaScriptのサイトの時計は動いているんですけど、自分の作ったのだと動いてくれません。 ---- function Clock() { dd = new Date(); Year = dd.getFullYear(); Mon = dd.getMonth()+1; Date = dd.getDate(); Days = new Array("日","月","火","水","木","金","土"); Day = Days[dd.getDay()]; AMPM = ""; Hour = dd.getHours(); Min = dd.getMinutes(); Sec = dd.getSeconds(); if (Hour > 12) { Hour = dd.getHours()-12; AMPM = "午後"; } else { AMPM = "午前"; } if (Hour < 10) Hour = "0"+Hour; if (Min < 10) Min = "0"+Min; if (Sec < 10) Sec = "0"+Sec; document.myForm.Time.value = Year+"年"+Mon+"月"+Date+"日("+Day+") "+AP+Hour+"時"+Min+"分"+Sec+"秒"; setTimeout("Clock()", 1000); } ---- 「<body onLoad="Clock()">」はしています。

  • CGIについて(時間表示)

    CGI初心者ですが、掲示板を作成中です。投稿するたびにメッセージの投稿時間がすべて現在時刻に書き換わります。 メッセージ毎に時間表示させたいのですが、いかのプログラムのどこを変更すればよいのでしょうか?宜しくお願いいたします。 # 時間処理 sub totime { ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(time); $year +=1900; $month++; $year = sprintf("%04d", $year); $month = sprintf("%02d", $month); $mday = sprintf("%02d", $mday); $hour = sprintf("%02d", $hour); $min = sprintf("%02d", $min); $sec = sprintf("%02d", $sec); $date = "$month/$mday $hour:$sec"; }

    • ベストアンサー
    • CGI
  • 1桁の日付に0を付ける

    日時を取得して、表示する際に「2010/3/16」を、→「2010/03/16」 のように数字が1桁の時だけ「0」を足して表示させたいのですが どのようにすれば良いでしょうか。 ------------------------------------- ($sec,$min,$hour,$day,$mon,$yea,$wdy,$yday,$isdst) = localtime(time); $year = $yea + 1900; $mon++; $nitiji= join("","$year/$mon/$day"," ","$hour",":","$min"); ------------------------------------- 上記の方法で、perlで書き出したhtmlに「$nitiji」を埋め込んで表示させているのですが 「0」をつけることができず困っております。 (システム上、そのようにしたいので) できれば「print(・・・」「「printf(・・・」」などの形式ではなく 「$nitiji」に直接その数値を入れられると良いのですが。 良い方法がありましたら宜しくお願いします。

    • ベストアンサー
    • Perl
  • 時間と連動させたい

    いま、どうしてもFlashを使わなくてはならなくて困っています。 常にPCの時間を取得監視しつつ、x時x分x秒になった時にxxを実行させるという物を作りたんですが、どうしたらいいですか。 例えば、15時59分にFlashを開いたとして、16時になったときに外部ファイル(swf)などを読み込んだり、 他のURLに飛ぶようにしたんです。 こんな感じにやってはみたんですが、 指定時間になってwindowは開くんですけど、たくさんwindowが開いてしまいます。 よろしくお願いします。 addEventListener(Event.ENTER_FRAME,timenow); function timenow(event:Event){ var time:Date; time = new Date(); var hour:Number = time.getHours(); var min:Number = time.getMinutes(); var sec:Number = time.getSeconds(); if(hour==16 && min==00 && sec==00){ navigateToURL(new URLRequest("xxx"), "_blank"); } }

専門家に質問してみよう