ホームページ ウェブフロントエンド H5 チュートリアル H5キャンバスを使ってホラーアニメーションを作る

H5キャンバスを使ってホラーアニメーションを作る

Mar 13, 2018 pm 04:33 PM
canvas html5

今回はH5キャンバスを使ってホラーアニメーションを作る方法を紹介します。 H5キャンバスを使ってホラーアニメーションを作る際の注意点は何ですか?

キャンバスでは、興味深い効果やアニメーションを実現できます。簡単なページ実装を使用して基本的な描画方法を学びます。

効果

ハッピーハロウィン

予備知識

let canvas = document.getElementById('canvas');let context = canvas.getContext('2d');
ログイン後にコピー

開始パス

context.beginPath();
ログイン後にコピー

beginPath() メソッドは、キャンバス上で描画パスを開始するか、現在のパスをリセットします。

パスの移動

context.moveTo();
ログイン後にコピー

moveTo() メソッドは、線を作成せずに、パスをキャンバス内の指定された点に移動します。

ラインの追加

context.lineTo();
ログイン後にコピー

lineTo()メソッドは、新しいポイントを追加し、そのポイントからキャンバス内の指定されたポイントまでラインを作成します。

drawImage

context.drawImage(image,x,y);
ログイン後にコピー

drawImage() メソッドは、キャンバス上に画像、キャンバス、またはビデオを描画したり、画像の一部を描画して画像のサイズを拡大/縮小したりできます。

ピクセルデータの取得

context.getImageData(x,y,width,height);
ログイン後にコピー

getImageData() メソッドは、四角形のピクセル データを指定するキャンバス imageData オブジェクトを取得できます。

imageData オブジェクトには、各ピクセルの rgba 値があり、配列の形式で data 属性に保存されます。

ピクセルデータを戻す

context.putImageData(imageData,x,y);
ログイン後にコピー

putImageData()メソッドは、取得した画像データをキャンバスに戻します。

実装

html

<canvas id="canvas"></canvas><button id="click" class="switch">Click</button>
ログイン後にコピー

css


html,body,canvas {    width: 100%;    height: 100%;    margin: 0;
}.switch {    position: absolute;    top: 70%;    right: 10%;    width: 50px;    height: 50px;    border-radius: 50px;    outline: none;    cursor: pointer;    animation: switch-animate alternate infinite ease 1s 0s;
}
@keyframes switch-animate {    from {        box-shadow: 0 0 30px #ece9c5;
    }    to {        box-shadow: 0 0 100px #eae5a7;
    }
}
ログイン後にコピー

js

(function () {    class Halloween {        constructor(id) {            this.canvas = document.getElementById(id);            this.ctx = this.canvas.getContext(&#39;2d&#39;);            this.w = this.canvas.width;            this.h = this.canvas.height;            this.data = [];
        }        //初始画布
        initDraw(img) {            this.w = this.canvas.width = img.width;            this.h = this.canvas.height = img.height;            this.ctx.drawImage(img, 0, 0);            this.data = this.ctx.getImageData(0, 0, this.w, this.h);
        }        //显示文字
        drawText() {            this.ctx.font = &#39;60px Verdana&#39;;            this.ctx.fillStyle = &#39;#ffffff&#39;;            this.ctx.fillText(&#39;万圣节快乐&#39;, 350, 280);
        }        //闪电
        lightning() {            let ctx = this.ctx;
            ctx.strokeStyle = &#39;#fff&#39;;
            ctx.lineWidth = 2;
            ctx.beginPath();
            ctx.moveTo(800, 10);
            ctx.lineTo(600, 100);
            ctx.lineTo(500, 200);
            ctx.stroke();
            ctx.beginPath();
            ctx.moveTo(600, 100);
            ctx.lineTo(650, 170);
            ctx.stroke()
        }        //打雷
        thunder() {            let timer = Math.floor(800 * Math.random());            this.reverse();            this.lightning();            this.drawText();
            setTimeout(() => {                this.reset();
            }, timer);
        }        //反转画布
        reverse() {            let imgData = this.ctx.getImageData(0, 0, this.w, this.h);            for (var i = 0, len = imgData.data.length; i < len; i += 4) {
                imgData.data[i] = 255 - imgData.data[i];
                imgData.data[i + 1] = 255 - imgData.data[i + 1];
                imgData.data[i + 2] = 255 - imgData.data[i + 2];
                imgData.data[i + 3] = 255;
            }            this.ctx.putImageData(imgData, 0, 0);
        }        //重置画布
        reset() {            this.ctx.putImageData(this.data, 0, 0);
        }
    }    let halloween = new Halloween(&#39;canvas&#39;);    let canvas = document.getElementById(&#39;canvas&#39;);    let ctx = canvas.getContext(&#39;2d&#39;);    let img = new Image();
    img.src = &#39;/images/halloween.png&#39;;
    img.onload = () => {
        halloween.initDraw(img);
    }    document.getElementById(&#39;click&#39;).onclick = () => {
        halloween.thunder();
    }
})();
ログイン後にコピー


H5キャンバスを使ってホラーアニメーションを作る

この記事の事例を読んだ後、あなたは方法をマスターしたと思います。さらにエキサイティングなコンテンツについては、php Chineseに注目してください。ウェブサイト

その他の関連記事!

推奨読書:

フロントエンド開発におけるSVGアニメーション

キャンバスを使用して黒い背景と特殊効果を持つ破片花火を作成する方法

以上がH5キャンバスを使ってホラーアニメーションを作るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

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

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

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

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

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

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

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

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

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

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

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

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

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

See all articles