百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>html5教程> 用H5的canvas做恐怖动画-
分享文章到:

用H5的canvas做恐怖动画-

发布时间:08/01 来源:未知 浏览: 关键词:
这次给大家带来用H5的canvas做恐怖动画,用H5的canvas做恐怖动画的注意事项是什么,下面就是实战案例,一起来看一下。 这次给大家带来用H5的canvas做恐怖动画,用H5的canvas做恐怖动画的注意事项是什么,下面就是实战案例,一起来看一下。

canvas可以实现一些有味的结果,动画实现。以一个简略的页面实现理解一下根基的绘图办法。

结果

万圣节高兴

准备见识

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

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('2d');            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 = '60px Verdana';            this.ctx.fillStyle = '#ffffff';            this.ctx.fillText('万圣节高兴', 350, 280);
        }        //闪电
        lightning() {            let ctx = this.ctx;
            ctx.strokeStyle = '#fff';
            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('canvas');    let canvas = document.getElementById('canvas');    let ctx = canvas.getContext('2d');    let img = new Image();
    img.src = '/images/halloween.png';
    img.onload = () => {
        halloween.initDraw(img);
    }    document.getElementById('click').onclick = () => {
        halloween.thunder();
    }
})();


canvas如何做出玄色配景带特效碎屑烟花

以上就是用H5的canvas做恐怖动画的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板