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

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

php中世界最好的语言
リリース: 2018-03-13 16:33:45
オリジナル
3420 人が閲覧しました

今回は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 サイトの他の関連記事を参照してください。

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