ホームページ > ウェブフロントエンド > H5 チュートリアル > HTML5 Canvas を使用してキーボードとマウスのアニメーションを作成する例を共有する_html5 チュートリアル スキル

HTML5 Canvas を使用してキーボードとマウスのアニメーションを作成する例を共有する_html5 チュートリアル スキル

WBOY
リリース: 2016-05-16 15:45:44
オリジナル
2325 人が閲覧しました

キーボードでボールの動きを制御します

ご存知のとおり、私たちが見ているアニメーションは、実際には静止画像の素早い切り替えの連続であり、視覚的な残像により肉眼では「動画」のような視覚効果を与えます。これを理解すると、キャンバス上にアニメーション効果を描画することが比較的簡単になります。最初に特定の静的グラフィックをクリアし、それを別の場所に再描画することを繰り返して、静的グラフィックを特定の軌道に従って移動させ、アニメーション効果を生成するだけです。

次に、キャンバス上に固体のボールを描画し、キーボードの矢印キーを使用してボールの動きを制御し、ダイナミックな効果を生み出します。サンプルコードは次のとおりです:

JavaScript コードコンテンツをクリップボードにコピーします
  1. "UTF-8">
  2. html5キャンバス描画可動ボール入力例
  3. "moveBall(event)">
  4. <キャンバス ID="myCanvas" width="400px" height="300px" style="border: 1px 単色赤;">
  5. お使いのブラウザは Canvas タグをサポートしていません。
  6. <スクリプトタイプ="text/javascript">
  7. //Canvas オブジェクト (canvas) を取得します
  8. var Canvas = document.getElementById("myCanvas");
  9. //球のクラスを表します
  10. 関数 Ball(x, y ,radius,speed){
  11. this.x = x || 10; //球の x 座標、デフォルトは 10
  12. this.y = y || 10; //球の y 座標、デフォルトは 10
  13. this.radius = radius || //球の半径、デフォルトは 10
  14. this.speed = 速度 || // ボールの移動速度、デフォルトは 5
  15. //上に移動
  16. this.moveUp = 関数(){
  17. this.y -= this.speed
  18. if(this.y < .radius){ //上限を超えないようにします
  19. RM
  20. };
  21. //右に移動
  22. this
  23. .moveRight =
  24. function
  25. (){
  26. this
  27. .x =
  28. this.speed var
  29. maxX = Canvas.width -
  30. this.radius; if(
  31. this
  32. .x > maxX){ //正しい境界を超えないようにします
  33. この.x = maxX; }
  34. };
  35. //左に移動
  36. this.moveLeft = function(){
  37. this.x -= this.speed
  38. if(this.x < .radius){
  39. //左境界を超えないようにします
  40. this
  41. .x = this.radius;
  42. };
  43. //下に移動
  44. this
  45. .moveDown =
  46. function(){ this
  47. .y =
  48. this.speed var
  49. maxY = Canvas.height -
  50. this.radius; if(
  51. this
  52. .y > maxY){ //下限を超えないようにします
  53. これ.y = maxY;
  54. }; }
  55. //ボールを描く
  56. 関数
  57. drawBall(ball){
  58. if
  59. (typeof ctx !=
  60. "未定義"
  61. ){ ctx.beginPath(); ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2, false); >
  62. ctx.fill();
  63. }
  64. }
  65. //キャンバスをクリア
  66. 関数 clearCanvas(){
  67. if(typeof ctx != "未定義"){
  68. ctx.clearRect(0, 0, 400, 300);
  69. }
  70. }
  71. var ball = new Ball();
  72. //HTML5 をサポートしていない一部のブラウザで構文エラーが表示されるのを避けるために、現在のブラウザが Canvas オブジェクトをサポートしているかどうかを単純に検出します
  73. if(canvas.getContext){
  74. //対応する CanvasRenderingContext2D オブジェクト (ブラシ) を取得します
  75. var ctx = Canvas.getContext("2d"); ドローボール (ボール)
  76. }
  77. //onkeydown イベントのコールバック ハンドラー関数
  78. //ユーザーのキーに従ってボールの動きを制御します
  79. 関数 moveBall(event){
  80. スイッチ(event.keyCode){
  81. case 37: //左矢印キー
  82. ball.moveLeft();
  83. ブレイク;
  84. case 38: //上方向キー
  85. ball.moveUp();
  86. ブレイク;
  87. case
  88. 39: //右矢印キー ball.moveRight();
  89. ブレイク
  90. ; case
  91. 40:
  92. //下矢印キー ball.moveDown();
  93. ブレイク
  94. ;
  95. default:
  96. //その他のキー操作は反応しません
  97. 戻る;
  98. }
  99. clearCanvas();
  100. //まずキャンバスをクリアします
  101. drawBall(ball);
  102. //最新のボールを描画します
  103. }
  104. HTML5 をサポートするブラウザを使用して次の Web ページを開いて実際の効果を確認してください (矢印キーを使用して移動します):
  105. キャンバスを使用して可動ボールを描画します
ピエロのスマイリーフェイス
いくつかの API を理解するだけで、必要なアニメーション パラメーターを使用して、動きに反応するこの興味深い Web アニメーションを作成できます。

最初のステップは顔の特徴を描くことです
このピエロには耳と眉がないので、器官は 3 つだけ残っていますが、2 つの目は別々に描く必要があるので、合計 4 つのパーツがあります。まずはコードを見てみましょう。

左目を描画するコード



JavaScript コード

コンテンツをクリップボードにコピーします

  1. var leftEye = new Kinetic.Line({
  2. x: 150、
  3. ポイント: [0, 200, 50, 190, 100, 200, 50, 210]、
  4. テンション: 0.5、
  5. クローズ済み: true
  6. ストローク: '白'
  7. ストローク幅: 10
  8. });

右目を描画するコード

JavaScript コードコンテンツをクリップボードにコピーします
  1. var rightEye = new Kinetic.Line({
  2. x: sw - 250、
  3. ポイント: [0, 200, 50, 190, 100, 200, 50, 210]、
  4. テンション: 0.5、
  5. クローズ済み: true
  6. ストローク: '白'
  7. ストローク幅: 10
  8. });

鼻を描くためのコード

JavaScript コードコンテンツをクリップボードにコピーします
  1. var names = new Kinetic.Line({
  2. ポイント: [240, 280, sw/2, 300, sw-240,280]、
  3. テンション: 0.5、
  4. クローズ済み: true
  5. ストローク: '白'
  6. ストローク幅: 10
  7. });

口を描くためのコード

JavaScript コードコンテンツをクリップボードにコピーします
  1. varmouth = new Kinetic.Line({
  2. ポイント: [150, 340, sw/2, 380, sw - 150, 340, sw/2, sh]、
  3. テンション: 0.5、
  4. クローズ済み: true
  5. ストローク: 「赤」
  6. ストローク幅: 10
  7. });

それがほんの数行のコードであることがわかったら、がっかりするでしょうか?はい、とても簡単です。あなたは Web ゲーム アニメーション プログラマーになれるという自信を持ち始めていると思います。

上記のコードを簡単に説明します。 Kinetic は私たちが使用する JS ツールキットです。ページの先頭で、次のように参照する必要があります:

JavaScript コードコンテンツをクリップボードにコピーします
  1. varmouth = new Kinetic.Line({
  2. ポイント: [150, 340, sw/2, 380, sw - 150, 340, sw/2, sh]、
  3. テンション: 0.5、
  4. クローズ済み: true
  5. ストローク: 「赤」
  6. ストローク幅: 10
  7. });

その他は、線の弾力性、色、幅など、いくつかの重要なポイントです。これらは理解しやすいです。

2 番目のステップは、画像を動かすことです

このアニメーションが魅力的な理由は、マウスの動きに反応し、ユーザーと対話できることです。これは、アニメーションを成功させるために最も重要な側面です。よく観察すると、ピエロの顔の変化は目が大きくなり、口が大きくなり、鼻が大きくなるだけです。しかし、特別なのは、この変化が瞬間的な変化ではないということです。そこにはいくつかのアルゴリズムが含まれています。これが最も懸念される部分です。幸いなことに、これらのアルゴリズム テクノロジは非常に成熟しており、アニメーション エンジン ライブラリはこれらのテクノロジを非常にシンプルで便利なインターフェイスにカプセル化しています。物事を動かす方法を見てみましょう。

左目のアニメーション

JavaScript コードコンテンツをクリップボードにコピーします
  1. var leftEyeTween = new Kinetic.Tween({
  2. ノード: leftEye、
  3. 期間: 1、
  4. イージング: Kinetic.Easings.ElasticEaseOut、
  5. y: -100、
  6. ポイント: [0, 200, 50, 150, 100, 200, 50, 200]
  7. });

右目のアニメーション

JavaScript コードコンテンツをクリップボードにコピーします
  1. var rightEyeTween = new Kinetic.Tween({
  2. ノード: rightEye、
  3. 期間: 1、
  4. イージング: Kinetic.Easings.ElasticEaseOut、
  5. y: -100、
  6. ポイント: [0, 200, 50, 150, 100, 200, 50, 200]
  7. });

鼻のアニメーション

JavaScript コードコンテンツをクリップボードにコピーします
  1. var namesTween = new Kinetic.Tween({
  2. ノード: 鼻、
  3. 期間: 1、
  4. イージング: Kinetic.Easings.ElasticEaseOut、
  5. y: -100、
  6. ポイント: [220, 280, sw/2, 200, sw-220,280]
  7. });

口のアニメーション

JavaScript コードコンテンツをクリップボードにコピーします
  1. varmouthTween = new Kinetic.Tween({
  2. ノード: 口、
  3. 期間: 1、
  4. イージング: Kinetic.Easings.ElasticEaseOut、
  5. ポイント: [100, 250, sw/2, 250, sw - 100, 250, sw/2, sh-20]
  6. });

コードは非常に単純で、変数名は一目瞭然です。経験の少ないプログラマにとって、これらのコードを理解するのは難しくありません。基本的に、コードのすべての部分で、アニメーション アクションの減衰モードと期間を指定するためのいくつかのポイントを指定できます。

完全なアニメーション コード

JavaScript コードコンテンツをクリップボードにコピーします
  1.   
  2.   
  3.      
  4.        
  5.      
  6.      
  7.     
    "container">
      
  8.   
  9.   
  10.   
  11.   

デモを見る

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート