ひとつのボタンでタイマーを動かしたり止めたりしたいのですが
こんにちは
趣味でjavascriptをしているものです
以下のサイトから、テトリスのコードをダウンロードしたのですが、
http://java.aimary.com/
このjavascriptの動くhtml内に
gameInterval(ゲーム内のタイマー変数)を
使って、ポーズボタンのようなものを追加したいと思ったのですが、
以下のコードのようにすると、いったん停止したとおもったら、
再びタイマーが呼び出され、何度も押すと、タイムインターバルが
短くなっていきました。
//headに追加
function clear_timer()
{
var obj = document.getElementById("timer_control");
clearInterval( gameInterval );
obj.detachEvent('onclick', clear_timer);
obj.attachEvent('onclick', set_timer );
}
function set_timer()
{
var obj = document.getElementById("timer_control");
obj.detachEvent('onclick', set_timer );
obj.detachEvent('onclick', clear_timer );
gameInterval = window.setInterval("Handle_Interval()",
(maxspeed-speed+1)*60);
obj.attachEvent( 'onclick', clear_timer );
}
//bodyに追加
<div style='position:absolute; left:520px; top:100px;'>
<form name='Form1'>
<input type="button" id="timer_control" value="pause"
onclick="JavaScript:clear_timer();">
</form>
</div>
おそれいりますが、どなたか、正しい記述の仕方を
教えていただけないでしょうか?
よろしくおねがいします。
No.1ベストアンサー
- 回答日時:
<input type="button" id="timer_control" value="pause" onclick="JavaScript:clear_timer();">
クリックするたびに、とくていのかんすうが1つよばれればよいので toggleTimer とでもしようか。
onclick="JavaScript:clear_timer();"
の、「JavaScript:」は、らべるにしかならないので、ひつようなし。
<input type="button" id="timer_control" value="pause" onclick="toggleTimer();">
clear_timer() と、set_timer()を、1つにし toggleTimer() にする
この2つのなかで、clickいべんとをつけたりはずしたりするのも、ひつようなし。
(inputようその、onclick でよばれるのだから、むよう)
gameInterval = window.setInterval("Handle_Interval()",(maxspeed-speed+1)*60);
ここで、変数 gameInterval、maxspeed、speed はぐろーばるへんすうで
(どこからでもへんこうできる)
たいまーくりあーするときに、へんすう gameInterval もくりあーしておくと
それをきじゅんに、たいまーがどうさちゅうなのか、とまっているのかはんだんできる
setInterval のまえにある、window は、しょうりゃくできるよ
たいまーのひきすうにもじれつをわたすのは、ださ~~い。
"Handle_Interval()" を "Handle_Interval" に。
いじょうをふまえて
function toggleTimer () {
if (gameInterval) {
clearInterval (gameInterval);
gameInterval = null;
}
else {
gameInterval = setInterval (Handle_Interval, (maxspeed-speed + 1) * 60);
}
}
もし、みじかくしたいのなら(やっぱり?)みかくにんだけど
function toggleTimer () {
gameInterval = gameInterval ?
(clearInterval (gameInterval), null):
setInterval (Handle_Interval, (maxspeed-speed + 1) * 60);
}
みじかくなってない? あぁ~~。
そうそう、ぜんかくくうはくは、はんかくに。これmyおきまりだから ^^;
よく回答していただきありがとうございます。
以前に回答していただいたもので、できるのか、
とあとになっておもいついたのですが・・・
また、なにか質問させていただいたときはよろしくお願いします。
No.2
- 回答日時:
投稿前に、ごはん食べてたら、良い回答がついたみたいだけど、
せっかくだから
<div id=akiko_div>
<INPUT type="button" STYLE="color:#FFFFFF;font-family:Copperplate Gothic light" value="やりなおす"
onclick="javascript:location.reload(true)">
<input type="button" onclick="pause();" value="PAUSE">
</div>
<script type="text/javascript">
function flip(init){
var respons=init;
return function(){
respons = !respons;
return respons;
}
}
var pause_flg=flip(false);
function pause(){
if('undefined' != typeof gameInterval){
if(pause_flg())
clearInterval(gameInterval);
else
gameInterval=window.setInterval("Handle_Interval()",(maxspeed-speed+1)*60);
}
}
</script>
</body>
二度目の回答をしていただき、ありがとうございます。
no.1さんに以前教えていただいた方法を後から
思い出してしまいました。
お手間をとらせてしまって申し訳ありません
貴重な時間をさいての回答、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
ボタンかリンクをクリックする...
-
追加ボタンを押した際に ok ボ...
-
javaScriptの変数をJavaの変数...
-
クリックさせたいが、click()が...
-
開いた子ウィンドウにあるボタ...
-
テキストフィールド未入力の場...
-
JavaScriptのfileオブジェクト...
-
JSのボタンを複数う使うには
-
onclickが動作しない
-
innerHTML内では改行は禁止?
-
フォームにて自動計算したい・・・
-
onClickがinput type="image"だ...
-
ポップアップブロックにならな...
-
テキストの背景色を変える。
-
INPUTでデフォルト値(数...
-
JavaScriptでIE上のボタンクリック
-
VB.NETで<Input>タグ、<text...
-
ひとつのボタンでタイマーを動...
-
クリックでテーブル内の背景色...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
JavascriptでDOM-based XSSの発...
-
onclickが動作しない
-
クリックさせたいが、click()が...
-
追加ボタンを押した際に ok ボ...
-
innerHTML内では改行は禁止?
-
ボタンかリンクをクリックする...
-
formのfileの値をhiddenでも持...
-
javaScriptの変数をJavaの変数...
-
JavaScriptのfileオブジェクト...
-
VB.NETで<Input>タグ、<text...
-
受け取ったパラメータが文字化け
-
JQueryでfunctionに引数としてI...
-
javascriptで作成されたテーブ...
-
jQueryで設定したイベントハン...
-
開いた子ウィンドウにあるボタ...
-
コードレビューをお願いします。
-
ボタンをクリックするとテキス...
-
BackSpaceしたい(QNo.2734284の...
-
URL 判定
おすすめ情報