フラッシュプレイヤーのバージョンを7にあげるとストップウォッチが作動しなくなる理由は?

このQ&Aのポイント
  • 質問者は、テキストエリアにスクロールバーを設置するために、Flashプレイヤーのバージョンを6から7に上げたところ、ストップウォッチが動かなくなった
  • 具体的な使用環境は、Windows XPとFlash MX 2004
  • 一体何が原因でストップウォッチが動かなくなるのか、理由を教えてほしい
回答を見る
  • ベストアンサー

フラッシュプレイヤーのバージョンを6から7にあげるとストップウォッチが作動しなくなった。

質問させて下さい。 function restartTimer() { hours = "00"; minutes = "00"; seconds = "00"; milli = "00"; buttonPressTime = getTimer()/1000-pauseLength; pause(); } // function pause() { pauseTime = getTimer()/1000; timing = false; } // function unpause() { unpauseTime = getTimer()/1000; pauseLength = (unpauseTime-pauseTime)+pauseLength; timing = true; } // _root.onEnterFrame = function() { totalTime = getTimer()/1000-pauseLength; goTime = totalTime-buttonPressTime; // if (timing) { hours = Math.floor(goTime/3600); minutes = Math.floor((goTime/3600-hours)*60); seconds = Math.floor(((goTime/3600-hours)*60-minutes)*60); milli = Math.floor((gotime-(seconds+(minutes*60)+(hours*3600)))*100); } }; unpausebutton.onRelease = function() { unpause(); pausebutton._visible = 1; unpausebutton._visible = 0; result._visible = 0; }; ソースが長くて申し訳ありません。 このスクリプトをあるサンプルからもらいつかっていたのですが、 テキストエリアにスクロールバーをとりつけるため、パブリッシュの設定でプレイヤーのバージョンを6から7にあげたところ、ストップウォッチが作動しなくなりました。 一体どういう理由によるものなのでしょうか? お答えいただければ幸いです。 私がつかっているのは、 Windows XP Flash MX 2004 です。 よろしくお願いします。

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

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

>> ソースが長くて申し訳ありません。 こういう場合は長い方が良いです。 勝手に予想して,付け足す部分を考える必要がなくなりますから。 次のスクリプト↓でうまく行くのではないでしょうか? (他に原因があるかもしれないので自信なしですが。) ---------------------------------------------------- function restartTimer() { hours = "00"; minutes = "00"; seconds = "00"; milli = "00"; // ★↓この初期値が必要です。 pauseLength = 0; buttonPressTime = getTimer()/1000-pauseLength; pause(); } // ★↓restartTimer を1回実行しないと, // 初期値定まりません。 restartTimer(); // function pause() { pauseTime = getTimer()/1000; timing = false; } // function unpause() { unpauseTime = getTimer()/1000; pauseLength = (unpauseTime-pauseTime)+pauseLength; timing = true; } // _root.onEnterFrame = function() { totalTime = getTimer()/1000-pauseLength; goTime = totalTime-buttonPressTime; // if (timing) { hours = Math.floor(goTime/3600); minutes = Math.floor((goTime/3600-hours)*60); seconds = Math.floor(((goTime/3600-hours)*60-minutes)*60); // ★大文字小文字↓に注意(goTime の T) milli = Math.floor((goTime-(seconds+(minutes*60)+(hours*3600)))*100); } }; unpausebutton.onRelease = function() { unpause(); pausebutton._visible = 1; unpausebutton._visible = 0; result._visible = 0; }; // (↓勝手に予想して付け足しました) pausebutton.onRelease = function() { pause(); pausebutton._visible = 0; unpausebutton._visible = 1; result._visible = 1; }; ------------------------------------------------ ★印が付いて射いる部分が,訂正部分です。 訂正部分の大半は初期値の設定に関することで, 1箇所だけが大文字小文字のケアレスミスです。 Flash Player 7 からは, 加算後代入などや IF判定する場合, 変数に初期値が必要です。 未定義の変数は,何も加算できませんし,falseでもありません。 例えば, A = A+5; trace(A); FlashPlayer6では, デフォルトで初期値のない変数の初期値は 0 になりますから, A = A + 5; は A = 0 + 5; となり, trace(A); は 5 になります。 FlashPlayer7では, デフォルトで初期値のない変数の初期値は undefined (見つからず)ですから, A = A + 5; は A = undefined + 5; となり, trace(A); は NaN (非数) となります。 あと,最初の関数 function restartTimer() は,スクリプトからはいつ実行されるのかわかりませんが, これを実行しないと,初期値の大前提が定まりませんから, すぐ下に, // ★↓restartTimer を1回実行しないと, // 初期値定まりません。 restartTimer(); を入れました。 その他,大文字小文字も区別(別のもの)とされますから,要注意です。 簡単に言うと, 「ないものはない!(決して0ではない)」,「大文字と小文字は違う!」 という当たり前のことが当たり前になったということです。

banrigreatwall
質問者

お礼

返事が遅くなって大変申し訳ありません。 アドバイスいただいた通りにやってみたところ、ストップウォッチが作動しました。 本当にありがとうございます。 わかりやすい説明もいれて下さって、本当にありがとうございます。理解する事ができました。

関連するQ&A

  • 指定日時までのカウントダウン

    指定日時までのカウントダウンで、数字を画像で表示させたモノを作りたいのですが、 いろんなサンプル等を見ながら作ってみたものの、うまくいきません。。。 アドバイスをお願い致します。 <html> <head> <title>指定日までの残り日数+時間を画像で表示する</title> <script language="JavaScript"><!-- function xDay(y,m,d,hh,mm,ss) { today = new Date(); xday = new Date(y,m-1,d,hh,mm,ss); dayMS = (24*60*60*1000,60*60*1000); days = Math.floor((xday.getTime()-today.getTime())/(24*60*60*1000)); hours = Math.floor(((xday.getTime()-today.getTime())%(24*60*60*1000))/(60*60*1000)); minutes = Math.floor((((xday.getTime()-today.getTime())%(24*60*60*1000))/(60*1000))%60); seconds = Math.floor((((xday.getTime()-today.getTime())%(24*60*60*1000))/1000)%60%60); if (seconds<10) { seconds = "0"+seconds; } if (minutes<10) { minutes = "0"+minutes; } if (hours<10) { hours = "0"+hours; } days += ""; for (i=0; i<days.length; i++) document.write("<img src='clock/"+days.charAt(i)+".gif'>"); hours += ""; for (i=0; i<hours.length; i++) document.write("<img src='clock/"+hours.charAt(i)+".gif'>"); minutes += ""; for (i=0; i<minutes.length; i++) document.write("<img src='clock/"+minutes.charAt(i)+".gif'>"); seconds += ""; for (i=0; i<seconds.length; i++) document.write("<img src='clock/"+seconds.charAt(i)+".gif'>"); } // --></script> </head> <body> <script language="JavaScript"><!-- xDay(2008,4,21,12,00,00); // --></script> </body> </html>

  • 経過時間について

    こんにちは 経過時間を0から表示して、ボタンが押されたら経過時間の計測・表示をストップし次のフレームに行き、また0から経過時間を表示したいのですが、どうすればいいでしょうか? 時間を表示させるdisptime.textとbtnというボタンをステージに配置しています。↓いろいろ試してみたのですが、フレーム移動した際に経過時間を0から表示させる方法がわかりません。。 flash8を使っています。 stop(); startflag=true; this.onEnterFrame=function(){ if(startflag==true){ starttime=getTimer(); keika=getTimer();-starttime; disptime.text=Math.floor(keika/1000); } }; btn.onRelease = function(){ startflag=false; nextFrame(); };

    • ベストアンサー
    • Flash
  • javascriptにおける指定日時までのカウントダウン

    いろいろなサイトを見回りながら「指定日までの残り日数と時間を表示する」のをjavascriptで動かしたいのですがリアルタイムに秒が進んでくれません。知識のある方はどうか間違えてる点のご教授お願いします。 <html> <head> <title>指定日までの残り日数と時間を表示する</title> </head> <body> <script language="JavaScript"><!-- function xDay(y,m,d,hh,mm,ss){ today = new Date(); xday = new Date(y,m-1,d,hh,mm,ss); dayMS = (24*60*60*1000,60*60*1000); days = Math.floor((xday.getTime()-today.getTime())/(24*60*60*1000)); hours = Math.floor(((xday.getTime()-today.getTime())%(24*60*60*1000))/(60*60*1000)); minutes = Math.floor((((xday.getTime()-today.getTime())%(24*60*60*1000))/(60*1000))%60); seconds = Math.floor((((xday.getTime()-today.getTime())%(24*60*60*1000))/1000)%60%60); myDisp=""; if (days != 0)myDisp+=days+"日と "; if (hours != 0)myDisp+=hours+"時間 "; if (minutes != 0)myDisp+=minutes+"分 "; myDisp+=seconds+"秒"; document.myForm.myFormDate.value = myDisp; setTimeout("xday()",1000); } // --></script> <form name="myForm"> <input type="text" size="35" name="myFormDate"> <script language="JavaScript"><!-- xday(); // --></script> </form> <script language="JavaScript"><!-- xDay(2008,9,13,15,00,00); // --></script> </body> </html>

  • デジタル時計の文字色を変えたい。。。

    デジタル時計の部分を 時計の絵にはめこんでいるのですが、 現在の文字色は赤です。 onClipEvent (load) { function TIME() { hour = nowtime(); } // End of the function function nowtime() { n_time = new Date(); hours = n_time.getHours(); minutes = n_time.getMinutes(); seconds = n_time.getSeconds(); if (seconds < 10) { seconds = "0" + n_time.getSeconds(); } // end if if (minutes < 10) { minutes = "0" + n_time.getMinutes(); } // end if if (hours < 10) { hours = "0" + n_time.getHours(); } // end if n_hour = hours + ":" + minutes + ":" + seconds; return (n_hour); } // End of the function } onClipEvent (enterFrame) { this.TIME(); } 上記のどこを変えるとデジタルの色を変えることができるのでしょう? 宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • gotoAndPlayされないです

    はじめてFlashを作ります。 "ATTACK1"と"ATTACK2"のフレームを0.2秒の間隔で10回交互に表示したあと、 "ATTACK3"と"ATTACK4"のフレームをenterが押されるまで交互に表示する というプログラムを作りたいのですが、 "ATTACK1"と"ATTACK2"のフレームを交互にずっと表示されるだけで、 ATTACK3へ移動しません。 "ATTACK1"というラベルのフレームに以下のように書きました。 ActionScript2.0でやっています。 どこが悪いのか教えてください。お願いします。 ATTACK1フレームのActionscript var timeCount = true; var endTime = getTimer()+0.2*1000; stop(); onEnterFrame = function() { if( timeCount ){ time = Math.ceil((endTime-getTimer())/1000); if( time <= 0 ){ timeCount = false; if( count >= 10 ){ gotoAndPlay("ATTACK3"); count=0; delete this.onEnterFrame(); } gotoAndPlay("ATTACK2"); count=count+1; delete this.onEnterFrame(); } } }; ATTACK2フレームのAcctionscript var timeCount = true; var endTime = getTimer()+0.2*1000; stop(); onEnterFrame = function() { if( timeCount ){ time = Math.ceil((endTime-getTimer())/1000); if( time <= 0 ){ timeCount = false; gotoAndPlay("ATTACK1"); delete this.onEnterFrame(); } } };

    • ベストアンサー
    • Flash
  • javascriptでカウントダウンタイマー

    お世話になります。 JavaScriptでカウントダウンをWEBに表示させたいと思っています。 WEBで見つけた3種類を試してみました。 下記、例A 締め切りを1カ月後に指定 <!-- the_day = new Date(2008,11,8) function countdown() { today = new Date() days = Math.floor((the_day-today)/(24*60*60*1000)) hours = Math.floor(((the_day-today)%(24*60*60*1000))/(60*60*1000)) minutes = Math.floor(((the_day-today)%(24*60*60*1000))/(60*1000))%60 seconds = Math.floor(((the_day-today)%(24*60*60*1000))/1000)%60%60 if((the_day - today) > 0){ document.f.days.value = days+"日"+"と"+hours+"時間"+minutes+"分"+seconds+"秒" }else{ document.f.days.value = "締め切りました" } tid = setTimeout('countdown()', 1000) } // --> <body> <FORM NAME=f> <INPUT TYPE=text SIZE=45 NAME=days> </FORM> <SCRIPT Language="JavaScript"> countdown(); </SCRIPT> </body> 以上 ブラウザでの表示「60日と5時間50分18秒」 残り、30日と表示されるべきところが、60日と表示されます。 PCの日付は合ってますし、他の者の環境でも同じ日にちでした。 そこで質問です。 1)試した3種類とも同様の日にちになりました。ということは間違いではなく、何か理由があるのですよね? 2)<days>を、(-30)にすれば数字的には合うのですが、問題ないでしょうか?   days = Math.floor((the_day-today)/(24*60*60*1000))-30 3)「22時締め切り」にしたいのですが、時間の指定は出来ないでしょうか?  初歩以前の質問で申し訳ありませんが、正しい書き方を教えていただければ、嬉しいです。 どうぞよろしくお願い致します。

  • Keyを押している時間によって・・・

    ゴルフゲームでKeyを押している時間によって、飛距離が変わるゲームがあります。 同じような操作機能を作りたいと思い、質問させて頂きました。 どうぞよろしく御願いします。 途中まで書いてみたのですが・・・getTimerとか使うんでしょうか? _root.startFlag = false; start_btn.onPress = function(){ if(_root.startFlag == false){ _root.startFlag = true; _root.startTime = getTimer(); } _root.start_btn.onRelease = function() { _root.startFlag = false; } } this.onEnterFrame = function(){ if(_root.startFlag == true){ if(ms<3000){ ms =getTimer() - _root.startTime; _root.dispTime = ms / 1000; this.createEmptyMovieClip("view_mc",0); view_mc.lineStyle(5,0xFF0000,100) view_mc.moveTo(0,100) view_mc.lineTo(ms/25,100) } if(ms>3000){ms=3000} }; }

    • ベストアンサー
    • Flash
  • アラートとストップウォッチを合体させたいのですが

    どのようにしたらいいのか分かりません。 ストップウォッチ.htm <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta content="text/html; charset=Shift_JIS" http-equiv=Content-Type> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>ストップウォッチ</title> <script type="text/JavaScript"> <!-- var a, b; var min, sec, cen, xmin, xsec, xcen; var hajime, ima, interval; var teishi; xmin=0; xsec=0; xcen=0; teishi=1; function dostart(){ if (teishi==1){ hajime=new Date(); a=hajime.getTime()-(xmin*60000+xsec*1000+xcen*10); count(); teishi=0; } } function count(){ interval=setTimeout("count()",10); ima=new Date(); b=ima.getTime(); min=Math.floor((b-a)/60000); sec=Math.floor(((b-a)%60000)/1000); cen=Math.floor((((b-a)%60000)%1000)/10); document.forms[0].elements[0].value=min; document.forms[0].elements[1].value=sec; document.forms[0].elements[2].value=cen; } function dostop(x){ clearTimeout(interval); xmin=eval(x.fun.value); xsec=eval(x.byo.value); xcen=eval(x.ika.value); teishi=1; } function doclear(){ clearTimeout(interval); xmin=0; xsec=0; xcen=0; document.forms[0].elements[0].value="0"; document.forms[0].elements[1].value="0"; document.forms[0].elements[2].value="0"; teishi=1; } function timeout(){ alert("10分経過しました。チネ!!"); } //--> </script> </head> <body bgcolor="#7fffd4" text="#000000" link="#0000ff" alink="#ff00ff" vlink="#00ffff"> <form action="this" method="post"> ストップウォッチ: <input size=3 name="fun" value="0">分 <input size=2 name="byo" value="0">秒 <input size=2 name="ika" value="0"> <br><br> <input type="button" value="スタート" onClick="dostart()" onKeyPress="dostart()"> <input type="button" value="ストップ" onClick="dostop(this.form)" onKeyPress="dostop (this.form)"> <input type="button" value="リセット" onClick="doclear()" onKeyPress="doclear()"> </form> </body> </html> アラート.htm <html> <head><title>テスト</title></head> <body onload=setTimeout('msgdsp()',600000)> <script language="JavaScript"> <!-- function timeout(){ alert("10分経過しました。"); } //--> </script> <input type=button value="スタート" onClick='setTimeout( "timeout()", 600000 )'><br><br> </body> </html> ・・・とそれぞれ作成しています。 ストップウォッチで「スタート」ボタンをクリックすると、ストップウォッチが走り、10分に差し掛かったところでアラートで「10分経過しました」と表示させたいのです。 どのようにすれば、2つの機能を同時に動かすことができるのか、ご教授いただきたいです。 環境はWindows XP、Internet Explorer7.0です よろしくお願いします。

  • Math.floorがうまく動きません…

    Flase8初心者です。 NowLoading画面に%を表示させようと思いスプリクトを書いたのですが、 Math.floorがうまく動かないのか小数点以下まで表示されてしまいます。  スプリクトは下記のものです。 this.onEnterFrame = function() { Parcent = (_root.getBytesLoaded()/_root.getBytesTotal()*100); Parcent_txt.text =Math.floor(Parcent); if (Parcent == 100) { _root.play(3); } }; _root.stop(); どこかに間違いがあるのでしょうか? 回答、よろしくお願い致します。

    • ベストアンサー
    • Flash
  • AS3.0に書き換えたいです

    みなさま始めまして、最近AS3.0を始めたばかりでして 右も左もわからない者です。 以前に、AS2.0でインスタンスを右方向にランダム移動させる プログラム(右上方向にいったり右下方向にいったり)を作っていたのですが、 AS3.0で使いまわそうと思ったところ、エラーになってしまい、 作業が止まってしまいました。 参考書などは買っていますが、覚えるのにかなり時間がかかりそうなので、 とりあえず今急いで教えてもらいたく質問させてもらいました。 よろしくお願い致します。 AS2.0で書いたスクリプトです これをAS3.0用に書き換えたいです this.onEnterFrame = function() {   _y -= Math.floor(Math.random()*3)-1;   _x -= Math.floor(Math.random()*5)-3; }; 本当に初歩的な質問でご迷惑おかけしますが、よろしくお願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう