HTML5 Canvas を使用してキーボードとマウスのアニメーションを作成する例を共有する_html5 チュートリアル スキル
キーボードでボールの動きを制御します
ご存知のとおり、私たちが見ているアニメーションは、実際には静止画像の素早い切り替えの連続であり、視覚的な残像により肉眼では「動画」のような視覚効果を与えます。これを理解すると、キャンバス上にアニメーション効果を描画することが比較的簡単になります。最初に特定の静的グラフィックをクリアし、それを別の場所に再描画することを繰り返して、静的グラフィックを特定の軌道に従って移動させ、アニメーション効果を生成するだけです。
次に、キャンバス上に固体のボールを描画し、キーボードの矢印キーを使用してボールの動きを制御し、ダイナミックな効果を生み出します。サンプルコードは次のとおりです:
- "UTF-8">
-
html5キャンバス描画可動ボール入力例 - 頭>
- "moveBall(event)">
- <キャンバス ID="myCanvas" width="400px" height="300px" style="border: 1px 単色赤;"> お使いのブラウザは Canvas タグをサポートしていません。
- キャンバス>
- <スクリプトタイプ="text/javascript">
- //Canvas オブジェクト (canvas) を取得します
- var Canvas = document.getElementById("myCanvas");
- //球のクラスを表します
- 関数 Ball(x, y ,radius,speed){
- this.x = x || 10; //球の x 座標、デフォルトは 10
- this.y = y || 10; //球の y 座標、デフォルトは 10
- this.radius = radius || //球の半径、デフォルトは 10
- this.speed = 速度 || // ボールの移動速度、デフォルトは 5
- //上に移動
- this.moveUp = 関数(){
- this.y -= this.speed
- if(this.y < .radius){ //上限を超えないようにします
- RM };
- //右に移動
- this .moveRight =
- function (){
- this .x =
- this.speed var maxX = Canvas.width -
- this.radius; if( this
- .x > maxX){ //正しい境界を超えないようにします
- この.x = maxX; }
- };
- //左に移動
- this.moveLeft = function(){
- this.x -= this.speed
- if(this.x < .radius){ //左境界を超えないようにします
- this
- .x = this.radius; };
- //下に移動
- this .moveDown =
- function(){ this .y =
- this.speed var maxY = Canvas.height -
- this.radius; if( this
- .y > maxY){ //下限を超えないようにします
- これ.y = maxY;
- }; }
- //ボールを描く
- 関数
- drawBall(ball){ if
- (typeof ctx != "未定義"
- ){ ctx.beginPath(); ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2, false); > ctx.fill();
- }
- }
- //キャンバスをクリア
- 関数 clearCanvas(){
- if(typeof ctx != "未定義"){
- ctx.clearRect(0, 0, 400, 300);
- }
- }
- var ball = new Ball();
- //HTML5 をサポートしていない一部のブラウザで構文エラーが表示されるのを避けるために、現在のブラウザが Canvas オブジェクトをサポートしているかどうかを単純に検出します
- if(canvas.getContext){
- //対応する CanvasRenderingContext2D オブジェクト (ブラシ) を取得します
- var ctx = Canvas.getContext("2d"); ドローボール (ボール)
- }
- //onkeydown イベントのコールバック ハンドラー関数
- //ユーザーのキーに従ってボールの動きを制御します
- 関数 moveBall(event){
- スイッチ(event.keyCode){
- case 37: //左矢印キー
- ball.moveLeft();
- ブレイク;
- case 38: //上方向キー ball.moveUp();
- ブレイク; case
- 39: //右矢印キー ball.moveRight();
- ブレイク
- ; case 40:
- //下矢印キー ball.moveDown();
- ブレイク ;
- default: //その他のキー操作は反応しません
- 戻る; }
- clearCanvas();
- //まずキャンバスをクリアします
- drawBall(ball);
- //最新のボールを描画します }
- HTML5 をサポートするブラウザを使用して次の Web ページを開いて実際の効果を確認してください (矢印キーを使用して移動します): キャンバスを使用して可動ボールを描画します
- 。
最初のステップは顔の特徴を描くことです
このピエロには耳と眉がないので、器官は 3 つだけ残っていますが、2 つの目は別々に描く必要があるので、合計 4 つのパーツがあります。まずはコードを見てみましょう。
JavaScript コード
- var leftEye = new Kinetic.Line({
- x: 150、
- ポイント: [0, 200, 50, 190, 100, 200, 50, 210]、
- テンション: 0.5、
- クローズ済み: true、
- ストローク: '白'、
- ストローク幅: 10
- });
右目を描画するコード
- var rightEye = new Kinetic.Line({
- x: sw - 250、
- ポイント: [0, 200, 50, 190, 100, 200, 50, 210]、
- テンション: 0.5、
- クローズ済み: true、
- ストローク: '白'、
- ストローク幅: 10
- });
鼻を描くためのコード
- var names = new Kinetic.Line({
- ポイント: [240, 280, sw/2, 300, sw-240,280]、
- テンション: 0.5、
- クローズ済み: true、
- ストローク: '白'、
- ストローク幅: 10
- });
口を描くためのコード
- varmouth = new Kinetic.Line({
- ポイント: [150, 340, sw/2, 380, sw - 150, 340, sw/2, sh]、
- テンション: 0.5、
- クローズ済み: true、
- ストローク: 「赤」、
- ストローク幅: 10
- });
それがほんの数行のコードであることがわかったら、がっかりするでしょうか?はい、とても簡単です。あなたは Web ゲーム アニメーション プログラマーになれるという自信を持ち始めていると思います。
上記のコードを簡単に説明します。 Kinetic は私たちが使用する JS ツールキットです。ページの先頭で、次のように参照する必要があります:
- varmouth = new Kinetic.Line({
- ポイント: [150, 340, sw/2, 380, sw - 150, 340, sw/2, sh]、
- テンション: 0.5、
- クローズ済み: true、
- ストローク: 「赤」、
- ストローク幅: 10
- });
その他は、線の弾力性、色、幅など、いくつかの重要なポイントです。これらは理解しやすいです。
2 番目のステップは、画像を動かすことです
このアニメーションが魅力的な理由は、マウスの動きに反応し、ユーザーと対話できることです。これは、アニメーションを成功させるために最も重要な側面です。よく観察すると、ピエロの顔の変化は目が大きくなり、口が大きくなり、鼻が大きくなるだけです。しかし、特別なのは、この変化が瞬間的な変化ではないということです。そこにはいくつかのアルゴリズムが含まれています。これが最も懸念される部分です。幸いなことに、これらのアルゴリズム テクノロジは非常に成熟しており、アニメーション エンジン ライブラリはこれらのテクノロジを非常にシンプルで便利なインターフェイスにカプセル化しています。物事を動かす方法を見てみましょう。
左目のアニメーション
- var leftEyeTween = new Kinetic.Tween({
- ノード: leftEye、
- 期間: 1、
- イージング: Kinetic.Easings.ElasticEaseOut、
- y: -100、
- ポイント: [0, 200, 50, 150, 100, 200, 50, 200]
- });
右目のアニメーション
- var rightEyeTween = new Kinetic.Tween({
- ノード: rightEye、
- 期間: 1、
- イージング: Kinetic.Easings.ElasticEaseOut、
- y: -100、
- ポイント: [0, 200, 50, 150, 100, 200, 50, 200]
- });
鼻のアニメーション
- var namesTween = new Kinetic.Tween({
- ノード: 鼻、
- 期間: 1、
- イージング: Kinetic.Easings.ElasticEaseOut、
- y: -100、
- ポイント: [220, 280, sw/2, 200, sw-220,280]
- });
口のアニメーション
- varmouthTween = new Kinetic.Tween({
- ノード: 口、
- 期間: 1、
- イージング: Kinetic.Easings.ElasticEaseOut、
- ポイント: [100, 250, sw/2, 250, sw - 100, 250, sw/2, sh-20]
- });
コードは非常に単純で、変数名は一目瞭然です。経験の少ないプログラマにとって、これらのコードを理解するのは難しくありません。基本的に、コードのすべての部分で、アニメーション アクションの減衰モードと期間を指定するためのいくつかのポイントを指定できます。
完全なアニメーション コード
-
"container">

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。
