dポイントプレゼントキャンペーン実施中!

質問させて下さい。

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
です。
よろしくお願いします。

A 回答 (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ではない)」,「大文字と小文字は違う!」
という当たり前のことが当たり前になったということです。
    • good
    • 0
この回答へのお礼

返事が遅くなって大変申し訳ありません。

アドバイスいただいた通りにやってみたところ、ストップウォッチが作動しました。

本当にありがとうございます。

わかりやすい説明もいれて下さって、本当にありがとうございます。理解する事ができました。

お礼日時:2006/08/09 17:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!