美文网首页
基于H5canvas刮刮乐界面

基于H5canvas刮刮乐界面

作者: 刘翾 | 来源:发表于2017-11-08 21:26 被阅读61次

效果

老规矩线上效果图, 如下图


这里写图片描述

原理

主要基于canvas的图形组合 context.globalCompositeOperation这个函数.
图形组合就是两个图形相互叠加了图形的表现形式,是后画的覆盖掉先画的呢,还是相互重叠的部分不显示等等,至于怎么显示就取决于type的值了.
type:

    source-over(默认值):在原有图形上绘制新图形

    destination-over:在原有图形下绘制新图形

    source-in:显示原有图形和新图形的交集,新图形在上,所以颜色为新图形的颜色

    destination-in:显示原有图形和新图形的交集,原有图形在上,所以颜色为原有图形的颜色

    source-out:只显示新图形非交集部分

    destination-out:只显示原有图形非交集部分

    source-atop:显示原有图形和交集部分,新图形在上,所以交集部分的颜色为新图形的颜色

    destination-atop:显示新图形和交集部分,新图形在下,所以交集部分的颜色为原有图形的颜色

    lighter:原有图形和新图形都显示,交集部分做颜色叠加

    xor:重叠飞部分不现实

    copy:只显示新图形

type值效果图:


这里写图片描述

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>刮刮乐</title>
</head>
<body>
    <canvas style="border: 1px solid black; background: url(dog.jpg)" id="myImg"></canvas>
    <img src="dog.jpg" style="display: none;">
    <script>
        var canvas = document.getElementById('myImg');
        var Img = document.getElementsByTagName('img')[0];
        canvas.width = 300;
        canvas.height = 300;
        var context = canvas.getContext("2d");
        context.fillStyle = '#CCC';
        context.fillRect(0, 0, 300, 300);
        canvas.onmousedown = function() {
            canvas.onmousemove = function(e) {
                var e = e || window.event;
                // e.clientX, e.clientY
                context.globalCompositeOperation = 'destination-out';
                context.beginPath();
                context.arc(e.clientX, e.clientY, 20, 0, Math.PI*2, false);//获取当前鼠标的横纵坐标作为填充的位置
                context.fillStyle = "rgba(0,0,0,1)";
                context.fill();
            }
        }
        canvas.onmouseup = function() {
            canvas.onmousemove = '';
        }
    </script>
</body>
</html>

相关文章

  • 基于H5canvas刮刮乐界面

    效果 老规矩线上效果图, 如下图 原理 主要基于canvas的图形组合 context.globalComposi...

  • 刮刮乐

  • 刮刮乐

    2007年3月3日,特别的日子。 为啥特别? 第一次坐飞机,青岛飞西安,提前4个小时就到机场了,在网上研究过攻略,...

  • 刮刮乐

    2014年11月3日 刮刮乐 今天杏子又在济南火车站候车了,这次她是故地重游,明显轻松了许多。 ...

  • 刮刮乐

    设置刮开后,显示的文字Label UILabel *label = [[UILabel alloc]initWit...

  • 刮刮乐

    刮刮乐这个东西真的是越刮越快乐,尤其是他给我准备的30张,现在有些喜欢30这个数字了,哈哈哈哈哈! 他给我准备...

  • 刮刮乐

    最近幻想中奖挣大钱的两个人于今晚走进彩票店刮起了刮刮乐,五块钱一张,最后刮了六张,付了十块钱,而我依然是好运绝缘体...

  • 刮刮乐热潮

    近日中国福利彩票在县城体育馆做一个瓜瓜乐的活动,大体内容就是五块钱一张的刮刮乐有机会赢取三十万大奖。而更吸引人的是...

  • 刮刮乐效果

    实现原理: 利用layer的mask遮罩 + 贝塞尔曲线UIBezierPath 关键代码: 效果图:

  • canvas— —刮刮乐

    今天,结合上一篇文章的抽奖小游戏,用canvas来写一个小游戏——刮刮乐。首先,用canvas做一个画布,宽高各为...

网友评论

      本文标题:基于H5canvas刮刮乐界面

      本文链接:https://www.haomeiwen.com/subject/zycumxtx.html