• 20行js代码制作网页刮刮乐


    分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码
    效果如下


    盖伦.jpg

    刮刮乐.gif
    HTML部分
    <body>
            ![](img/gailun.jpg)
            <canvas id="canvas" width="400" height="300"></canvas>
        </body>

    没什么要特别注意的
    为了效果加了些CSS样式

    CSS部分
    <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
                img{
                     400px;
                    height: 300px;
                    left: 200px;
                    position: absolute;
                    z-index: -1;
                }
                canvas{
                    margin-left:200px;
                }
            </style>
    注意

    1.为了清除浏览器自带效果加了

    *{
                margin: 0;
                padding: 0;
            }

    2.img需要在灰布下面,加了z-index;
    3.图片绝对定位


    js部分
    分析下逻辑

    1.鼠标按下移动相应区域刮开
    2.鼠标抬起改变鼠标位置不接着刮开

    js代码
        <script type="text/javascript">
            var canvas = document.getElementById("canvas");
            var  context =  canvas.getContext('2d');
                //画蒙布
            context.beginPath();
            context.fillStyle= 'grey'
            context.fillRect(0,0,400,300);
            //鼠标按下开刮
            canvas.onmousedown=function(){
                canvas.onmousemove = function(){
                    //获取鼠标坐标
                    var x = event.clientX;
                    var y  = event.clientY;
                    //destination-out             显示原来的不在后来区域的部分
                    context.globalCompositeOperation = "destination-out";
                    context.beginPath();
                    context.arc(x-200,y,30,0,Math.PI*2);
                    context.fill();        
                }
            }
            //鼠标抬起不刮开
            canvas.onmouseup=function(){
                canvas.onmousemove = function(){    
                }
            }    
            </script>

    需要注意的是

    1.图片和画布左移了200px,所以圆的起点坐标相对于获取位置减了200px;
    2.globalCompositeOperation是画布的一个功能作用是设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上,还有其余10种写法


    学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群
    343599877,我们一起学前端!

  • 相关阅读:
    spring原理
    架构师和数学
    项目经理需要注意的地方
    如何快速掌握一门新技术
    项目管理要做啥
    编程原则
    架构设计的常用思想
    聊聊编程范式
    程序员与哲学家
    IT人员如何有效规划自己时间
  • 原文地址:https://www.cnblogs.com/jiaoyu121/p/7061958.html
Copyright © 2020-2023  润新知