イヌでもわかるJavaScript講座
|
Step.93 - ビリヤード風に画像を動かす
|
ビリヤード風に画像を動かします。 |
Step テーマ ● とくになし |
実行例何か画面で動いてる? |
リスト
|
サンプルだけの HTMLは こちらへ |
説明画面上に画像をビリヤードのクッションのように動かしてみます。 球を設置して、スクリプトを setInterval にて グルグルさせます。
myTamaMain() 内で、上下左右の端の座標を取得して、玉をその範囲内で動かします。 myXs は、左端のX座標を格納します。 myYs は、上端のY座標を格納します。 左上端は、(0 , 0) と思うでしょうが、画面がスクロールしてしまったら、(0, 0)ではありません。 その位置の左上端の座標を取得するためには、 document.body.scrollLeft、document.body.scrollTop で取得します。 window.pageXOffset、window.pageYOffset は、スクロールバーの外側座標なので、やめときます。※ Step.74 参照
myXe は、右端のX座標を格納します。 myYe は、下端のY座標を格納します。 右下端の座標取得は、 document.body.clientWidth、document.body.clientHeight で取得します。 window.innerWidth、window.innerHeight は、IE8以下が使えないので、やめときます。※ Step.74 参照
さて、ここからがプログラムです。 玉をこの左上から右下の座標範囲内で動かすわけですが、どう動かしましょうか ^o^; 水平に動かすなら、X座標を足していけば動きます。 垂直に動かすなら、Y座標を足していけば動きます。 斜めに動かすなら、XとY座標を足していけば動きます。 これだけでは、ビリヤードのクッションには、まだ遠いですよね。 乱数を使いましょう。 サンプルでは、X方向、Y方向にそれぞれ、10〜20の範囲の乱数を作りました。 縦、横に1ピクセルずつ動かしていたら、やけに遅いので、0.1秒周期に10〜20ピクセル単位で動かしました。 乱数を使うことで、例えば、右に1ピクセル、下に3ピクセルとか、右に3ピクセル、下に2ピクセル移動と言ったふうに、斜めに微妙な角度が生まれます。 この移動が端にぶつかったら、再び乱数で角度を決めて、方向転換させるわけです。
そんでもって、移動させるだけです。
サンプル画像
参考ステップ Step.14 九九の問題に答えてみましょう ※ 乱数:Math.random Step.74 画面右下にリンクバナーを固定表示してみましょう ※ 座標 Step.92 マウスカーソルに何かくっつけましょう |