Advertisement
Guest User

Untitled

a guest
Feb 6th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. <canvas id="world"width="320" height="320"></canvas>
  2. <script type="text/javascript">
  3.  
  4. /* グローバル変数の宣言 */
  5. var SCREEN_SIZE = 282; // キャンバスの幅
  6. var FPS = 60; // フレームレート
  7. var canvas; //= document.getElementById('world');
  8. var context; //= canvas.getContext('2d');
  9. var x;
  10. var y;
  11. var angle = 0; // 角度
  12. var distance; // おもちゃの中心までの距離
  13. var speed; // 速度
  14. var acceleration; // 加速度
  15. var RESISTANCE = 0.05; // 空気抵抗
  16.  
  17. function start() {
  18. /* ゲームの初期化処理と開始処理 */
  19. canvas = document.getElementById('world'); // canvas要素を取得
  20. canvas.width = canvas.height = SCREEN_SIZE; // キャンバスのサイズを設定
  21. context = canvas.getContext('2d'); // コンテキスト
  22. context.fillStyle = 'rgb(0, 0, 0)'; // 色
  23. draw();
  24. update(); // ゲームループ開始
  25. }
  26.  
  27. function update() { // 距離の計測とキャンバスの描画処理
  28. canvas.onmousemove = function(event) { // マウスの座標を得る
  29. x = event.offsetX;
  30. y = event.offsetY;
  31. }
  32. distance = Math.sqrt((SCREEN_SIZE / 2 - x) * (SCREEN_SIZE / 2 - x) + (SCREEN_SIZE / 2 - y) * (SCREEN_SIZE / 2 - y)); // 2点間の距離を計算
  33. if(angle > 90) angle -= 90;
  34. acceleration = 0.1 - (distance / 1000); // 0.1は最高速度。おもちゃの中心からマウスが離れると減算される
  35. if(acceleration > 0) speed += acceleration; // 加速度が0以上なら加速
  36. speed -= RESISTANCE; // おもちゃの回転は常に空気抵抗を受ける
  37. if(speed >= 0) angle += speed; else speed = 0; // 速度が0以上なら加速。マイナスなら0
  38. if(speed != 0) draw(); // canvasを更新
  39. setTimeout(update, 1000/FPS); // ミリ秒後に再帰
  40. }
  41.  
  42. function draw() { // キャンバスの描画処理。update関数で呼び出される
  43. context.save(); // 描画スタイルを保存
  44. context.clearRect(0, 0, SCREEN_SIZE, SCREEN_SIZE); // 画面をクリア
  45. context.translate(SCREEN_SIZE / 2, SCREEN_SIZE / 2);
  46. context.rotate(angle * Math.PI / 180); // おもちゃを回転
  47. context.fillRect(-100, -100, 200, 200);
  48. context.restore(); // 描画スタイルを復元
  49. }
  50. start();
  51. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement