前節のサイコロはゲームには使えない
サイコロは転がして使うものなのに、すぐ目が出てしまう!
そこで、クリックしたら転がり始め、もう一度クリックしたら止まるように改造する。
さらに、クリックという動作を省略して、マウスを乗せるだけで出来るようにしてみます。
1、クリックしたら一定間隔で繰返しサイコロを入れ替える。
理屈は明白、前節で作った、乱数表でサイコロの目を入れ変える命令を
一定の時間間隔で繰返し実行させればいい。
こういうときはタイマー時計を使います。
タイマーを起動するには
タイマー置場名=setTimeout(”命令( )”,間隔);
と書きます。 書く場所は繰り返す命令の中に書きます。
具体的には
function chg(){
r=Math.random()*6; //乱数表で
rr=Math.floor(r)+1; //切り捨て
document.saikoro.src=sai_file[rr]; //入れ替える
tim=setTimeout("chg()",200); //tim置場にchg()を50/1000秒ごと
//繰り返すタイマーを設置
}
のように書きます。
2、クリックしたらサイコロを静止させる。
静止させるにはタイマーを止めればいい
その書式は
clearTimeout(タイマー置き場);
と書きます。
具体的には
clearTimeout(tim);
の様に書きます。
3、タイマーの起動?、それとも停止?。
ところで、サイコロを、クリックしたときに
「転がせ!」、なのか「静止しろ」!なのかを判別しなければならない。
判別用の置場をつくり、タイマー作動中は「1」、停止したら「0」をセットして判断用に使うとよい。
具体的に書いてみると
flg=0; //判別用の置場を設け「0」をセットして準備
//起動と停止
function at(){
if(flg==1){ //もし作動中なら
clearTimeout(tim); /タイマー停止
flg=0; //判別置場に「0」をセットし
}else{ //作動中でなかったら
flg=1; //判別置場に「1」をセットし
chg(); //サイコロを転がす命令よびだし
}
}
サイコロをクリックしたらAt( )を呼び出すように変更しておく
のように書き換えます。
4、体験してみよう
サイコロをクリックしてください
5、マウスを置くだけで
いちいち、マウスボタンをクリックしなくても、マウスを乗せるだけでも転がせます。
「クリックしたら」JavaScriptの命令を呼び出すのには
<a href="JavaScript:at()">
と書きましたが、
今度は「クリックした時は何もしない」と書きかえるて置かなければいけない
その場合は、何もしない命令
void(0)
を使えばいい。
そして、マウスを載せたらJavaScriptの命令を呼び出すのは
onMouseover=”命令( )”
逆にマウスを外したらJavaScriptの命令を呼び出すのは
onMouseOut=”命令( )”
と書きます。
具体的には
のように書きます。
マウスを乗せた時は、転がらせる命令
function chg( ){
を直接呼び出すようにして
マウスが外れてとめるときは
function at( ){
の静止させる部分だけ残して使うことにします。
具体的には
function at(){
clearTimeout(tim); /タイマー停止
}
のように改造します。
6、体験してみよう
サイコロにマウスを乗せてください
ソース
javascript入門no23
サイコロをクリックしてください
|