• 締切済み

時間と連動させたい

いま、どうしても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"); } }

みんなの回答

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

考えれば考えるほど方法は色々と出てくると思いますが, 次のような感じにしても良いと思います。 -------------------------------------------------- addEventListener(Event.ENTER_FRAME,timenow); // 古い秒の宣言 var old_sec:int; function timenow(event:Event) { var time:Date; time = new Date(); var hour:int=time.getHours(); var min:int=time.getMinutes(); var sec:int=time.getSeconds(); // 時が16 で 分が0 で 秒が0 で 古い秒が今の秒でないとき if (hour==16&&min==0&&sec==0&&old_sec!=sec) { navigateToURL(new URLRequest("xxx"), "_blank"); } // 今の秒を古い秒に保存 old_sec=sec; } -------------------------------------------------- ちなみに 分や秒は 00 ではなくて 0 ですよ。 00 だと 8進数 の 0 という意味になると思います。 この場合はどちらでも結局 0 ですから動作に問題はありませんが, 05 などとした場合,意味が変わります。

noname#79312
質問者

お礼

ありがとうございました。 おかげでできました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【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
  • AS3.0のカスタムクラスを使いたいのですが

    Flash AS3.0を使って出席を確認するプログラムを作っているのですが、カスタムクラスを利用して動作させようとすると思った通りに動作しません。 下のプログラムをカスタムクラスを使って動作させるにはどうすればいいのか教えてもらえないでしょうか、よろしくお願いします。 ________________________________________________________________________________________________________ import flash.geom.*; import flash.utils.*; import flash.events.*; import flash.display.*; var starttime:Number; var stoptime:Number; var reset:Number; var flag:int; var sec; var min; var hou; var h; var m; Clock.addEventListener(Event.ENTER_FRAME,getdate); time1.addEventListener(Event.ENTER_FRAME,count); mc1.addEventListener(Event.ENTER_FRAME,changecolor); btn1.addEventListener(MouseEvent.CLICK, ST); function getdate(e:Event):void{ //時間情報の取得 var time :Date = new Date(); var year = time.getFullYear(); var mon = time.getMonth()+1; var day = time.getDate(); h = time.getHours(); m = time.getMinutes(); //時計の桁あわせ h = ((h < 10) ? "0" : "") + h; m = ((m < 10) ? "0" : "") + m; //テキストに書き込む Clock.text =""+year+"/"+mon+"/"+day+" "+h+":"+m; } function count(e:Event):void{ if(flag==1){ var mil = getTimer() - reset; sec = Math.floor(mil/1000); min = Math.floor(sec/60); hou = Math.floor(min/60); // 次の単位を超えないように制限 mil %= 1000; sec %= 60; min %= 60; //時間の桁をあわせる min = ((min < 10) ? "0" : "") + min; hou = ((hou < 10) ? "0" : "") + hou; // すべてつなげて文字として表示 timer1.text ="経過時間 "+hou + " : " + min; }else{ timer1.text ="経過時間 00 : 00"; } } function changecolor(e:Event){ var trans:Transform = new Transform(mc1); var colorTrans:ColorTransform = new ColorTransform( 1, 1, 1, 1, 0, 0, 0, 0); if(flag==1){ if(sec <20){ colorTrans.redOffset = 0; colorTrans.greenOffset = 0; colorTrans.blueOffset = 255; } if(sec >=20 && sec <40){ colorTrans.redOffset = 0; colorTrans.greenOffset = 255; colorTrans.blueOffset = 0; } if(sec>=40 && sec<60){ colorTrans.redOffset = 255; colorTrans.greenOffset = 0; colorTrans.blueOffset = 0; } } trans.colorTransform = colorTrans; } function ST(event:MouseEvent):int{ if(flag == 0){ flag = 1; Startstop1.text ="入室時間"; time1.text =""+h+":"+m; reset = getTimer(); }else{ Startstop1.text ="退室時間" time1.text =""+h+":"+m; flag = 0; } return flag; } _______________________________________________________________________________________

    • ベストアンサー
    • Flash
  • 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()">」はしています。

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

    初めまして。 どなたか詳しい方、助けていただけると幸いです。 カウントダウンの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
  • 「誕生日まであと○日です」

    <html> <head> <title>test</title> </head> <body> <SCRIPT LANGUAGE="javascript" TYPE="text/javascript"> <!-- var weeks = new Array('日','月','火','水','木','金','土'); var now = new Date(); var year = now.getYear(); // 年 var month = now.getMonth() + 1; // 月 var day = now.getDate(); // 日 var week = weeks[ now.getDay() ]; // 曜日 var hour = now.getHours(); // 時 var min = now.getMinutes(); // 分 var sec = now.getSeconds(); // 秒 if(year < 2000) { year += 1900; } // 数値が1桁の場合、頭に0を付けて2桁で表示する指定 if(month < 10) { month = "0" + month; } if(day < 10) { day = "0" + day; } if(hour < 10) { hour = "0" + hour; } if(min < 10) { min = "0" + min; } if(sec < 10) { sec = "0" + sec; } document.write('今日:' + year + '年' + month + '月' + day + '日'); // --> </SCRIPT> </body> </html> これで今日の日付けは表示できたのですが 誕生日が7/31なのですが document.writeで 「誕生日まであと○日です」 と表示するにはどうすれば良いでしょうか?

    • ベストアンサー
    • HTML
  • ページを開く時のサイズ指定の方法

    時間を表示させるJAVASCRIPTを使っているのですが、ファイルを表示させた時 サイズを指定したいのですが、よろしくおねがいいたします。現在のソース     <FORM METHOD="post"> ------- World Time-------- <BLOCKQUOTE> <TABLE> <TR><TD>Kiev<TD><INPUT NAME="nz" SIZE=6> <TR><TD>Donetsk<TD><INPUT NAME="london" SIZE=6> <TR><TD>JPN<TD><INPUT NAME="tokyo" SIZE=6> </TABLE> </BLOCKQUOTE> </FORM> <SCRIPT LANGUAGE="JavaScript"> tz_nz = 3 * 60; // ウクライナの時間です tz_uk = 2.5 * 60; // ウクライナ ドネツク tz_jp = 9 * 60; // 日本 var nz, uk, jp; // 時刻文字列を入れるところ function update_watch() { now = new Date(); nz = nowat(now, tz_nz) uk = nowat(now, tz_uk) jp = nowat(now, tz_jp) document.forms[0].elements[0].value = nz document.forms[0].elements[1].value = uk document.forms[0].elements[2].value = jp setTimeout('update_watch()', 999); // 1000msec = 1sec } function nowat(now, tz) { var hour, min, sec; var t = new Date(); t.setTime(now.getTime() + (now.getTimezoneOffset() + tz) * 60 * 1000); hour = t.getHours(); min = t.getMinutes(); sec = t.getSeconds(); if (hour < 10) { hour = "0" + hour; } if (min < 10) { min = "0" + min; } if (sec < 10) { sec = "0" + sec; } return hour + ":" + min + ":" + sec; } update_watch(); </SCRIPT>

  • 携帯で日時取得

    携帯サイトで例えば「今日は○月○日です。」というように自動的にその日の日付を表示したいのですが、 PCの場合にはjavascriptを使って使っていたのですが携帯の場合は同じスクリプトを使っても表示されません。 そこでscriptを以下のように書き換えたのですが、 実際携帯でHPを見てもテキストエリアだけが表示されて他は何も表示されません。 1年半くらい前に買ったvodafoneの端末なのでブラウザがjavaに対応していないというわけではないと思うのですが・・・。どうしたら良いのでしょうか? <SCRIPT TYPE="text/JavaScript">   <!--   var Youbi = new Array(7);    // (1)   Youbi[0] = "日";   Youbi[1] = "月";   Youbi[2] = "火";   Youbi[3] = "水";   Youbi[4] = "木";   Youbi[5] = "金";   Youbi[6] = "土";   function Time()   {     var msg, year, month, date, day, hour, min, sec;     Now = new Date();    // (2)     year = Now.getYear();     month = Now.getMonth() + 1; // 0~11 が返るので +1 しています。     date = Now.getDate();     day = Now.getDay();     hour = Now.getHours();     min = Now.getMinutes();     sec = Now.getSeconds();     msg = year + "年" + month + "月" + date + "日" + "("       + Youbi[dayt] + ")" + "\n" + hour + "時"       + min + "分" + sec + "秒"     document.tm.val.value = msg;     setTimeout( "Time()", 1000);  // (3)   }   //-->   </SCRIPT> Time Information<BR>     <TEXTAREA NAME="val" ROWS="2" COLS="20">     </TEXTAREA>   <SCRIPT TYPE="text/JavaScript">   <!--   Time();   //-->   </SCRIPT>

    • ベストアンサー
    • Java
  • タイマー機能について

    テキストに書いてあったのですが、デジタル時計を作り、1秒事に時間を動かすプログラムを作りました。 ですが、テキストどおりに作ったにも関わらず時間が動かずに大変困っています。 そこで皆様方のお力をお貸しして頂きたく、こちらに質問させてもらいました。 少し長いですが、ソースコードは以下のとおりです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-type" content="text/html; charset=UTF-8"> <title>タイマー</title> <style type="text/css"> input { width: 90px; font-size: 70px; font-family:monospace; } p{font-size: 60px;} <script type="text/javascript"> var hourBox, minBox, secBox; var timer; window.onload = init(); funciton init() { hourBox = document.clockForm.hour; minBox = document.clockForm.minute; secBox = document.clockForm.sec; dClock(); } function dClock() { var now = new Date(); var hour = now.getHours(); var min = now.getMinutes(); var sec = now.getSeconds(); if (hour<10) hour = "0" + hour; if (min<10) = "0" + min; if (sec<10) = "0" + sec; hourBox = hour; minBox = min; secBox = sec; timer = setTimeout("dClock()", 1000); } </style> </script> </head> <body bgcolor="#FFFFFF"> <form name="clockForm"><p> <input type="text" name="hour">時 <input type="text" name="minute">分 <input type="text" name="sec">秒 </p></form> </body> </html> これでプログラムを実行すると、 □時□分□秒 (□はテキストボックスと思って下さい) このような画面が表示されます。 なので、テキストボックスの全てに「10」と入力しましたが、いくら待っても時間が変更する兆しが見えません。 どうしたらちゃんと動くのでしょうか。 アドバイスどうぞ宜しくお願い致します。

  • JAVAのプログラムについて

    ////////////////////////////////////////////////////////////////// abstract class Time_D { abstract Object Sec(); abstract Object Min(); abstract Object Hour(); } ////////////////////////////////////////////////////////////////// class PresentTime_D extends Time_D { Object Sec() { Date tm = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("s"); return new Integer(Integer.parseInt(formatter.format(tm))); } Object Min() { Date tm = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("m"); return new Integer(Integer.parseInt(formatter.format(tm))); } Object Hour() { Date tm = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("h"); return new Integer(Integer.parseInt(formatter.format(tm))); } } //////////////////////////////////////////////////////////////// class SetTimeCheck_D extends PresentTime_D { int settime; SetTimeCheck_D(int _settime) { settime = _settime; } //-------------------------------------------------- Object Sec() { return new Boolean(((Integer)super.Sec).intValue == settime); } Object Min() { return new Boolean(((Integer)super.Min).intValue == settime); } Object Hour() { return new Boolean(((Integer)super.Hour).intValue == settime); } } 上記のようなプログラムをした場合、下記のようなエラーが出ます。 return new Boolean(((Integer)super.Sec).intValue == settime); } のSecはPresentTime_Dのクラス内のフィールドではありません。 なぜ、このようなエラーが出るのですか?

  • JavaScriptでdocument.fileCreatedDate

    JavaScriptでdocument.fileCreatedDateを使おうとして <script type="text/javascript"> <!-- var date = new Date(document.fileCreatedDate); var year = date.getYear(); var month = date.getMonth() + 1; var day = date.getDate(); var hour = date.getHours(); var min = date.getMinutes(); if(year < 2000){year += 1900;} if(month < 10){month = "0" +month;} if(day < 10){day = "0" + day;} if(hour < 10){hour = "0" + hour;} if(min < 10){min = "0" + min;} document.write("作成日:" + year + "年" + month + "月" + day + "日" + hour + "時" + min + "分" + "<BR>"); //--> </script> のようなスクリプトを作ったんですが表示がおかしくなります。 Google chromeでも正常に表示できるようにしたいです。 よろしくおねがいします。