手机刮刮卡

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, width=device-width,minimum-scale=1.0,maximum-scale=1.0, user-scalable=no" />
    <title> 刮刮卡 </title>
</head>
<body>
<canvas id="canvas" width="300" height="150"></canvas>
<script>
    var oCanvas = document.getElementById(‘canvas‘),
        aPrizeList = [‘images/1.jpg‘, ‘images/2.jpg‘],//控制中奖几率
        prizeImg = aPrizeList[Math.floor(Math.random() * aPrizeList.length)];

    scratch(oCanvas, prizeImg, 0.3, function(){
        alert(‘成功!‘);
    });

    /**
     * 刮刮卡
     * @param oCanvas   canvas绘图对象
     * @param prizeImg  中奖图片
     * @param scale     刮开区域占比
     * @param callback  刮开后执行的函数
     */
    function scratch(oCanvas, prizeImg, scale, callback){
        if(!oCanvas.getContext) return;
        var w = oCanvas.getAttribute(‘width‘),
            h = oCanvas.getAttribute(‘height‘),
            ctx = oCanvas.getContext(‘2d‘),
            fn = callback || function(){},
       bEnd = false; // 防止touchend多次执行回调

        // 设置奖品图片
        oCanvas.style.background = ‘url(‘+ prizeImg +‘) 0 0/cover no-repeat‘;

        // 绘制灰色刮奖区域
        ctx.fillStyle = "#999";
        ctx.fillRect(0,0, w, h);

        // 设置重叠显示方式
        ctx.globalCompositeOperation="destination-out";

        // 绑定事件
        oCanvas.addEventListener(‘touchstart‘, function(){

            // 按下并滑动
            oCanvas.addEventListener(‘touchmove‘, function(e){
                e.preventDefault();
                var x = e.targetTouches[0].clientX + document.body.scrollLeft - oCanvas.offsetLeft,
                    y = e.targetTouches[0].clientY + document.body.scrollTop - oCanvas.offsetTop;
                ctx.beginPath();
                ctx.arc(x, y, 15, 0, Math.PI*2);
                ctx.fill();
                ctx.closePath();
            });

            oCanvas.addEventListener(‘touchend‘, function(e){
                e.preventDefault();
                var count = 0,
                    datas = ctx.getImageData(0,0,w,h);
                for (var i = 0, len = datas.data.length; i < len; i++) {
                    if (datas.data[i] == 0) {
                        count++;
                    }
                }
                if (count >= datas.data.length * scale && !bEnd) {
                    fn();
                    ctx.fillRect(0,0,w,h);
            bEnd = true;
                }
            });
        });
    }
</script>
</body>
</html>

效果如图:

时间: 2024-11-08 06:35:31

手机刮刮卡的相关文章

【回忆1314】抽奖之手机刮刮卡

直接看效果点这里(记得模拟手机噢) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1.0, width=device-width,minimum-scale=1.0,maximum-scale=1.0, user-scalable=no" /&g

Html5实现移动端、PC端 刮刮卡效果

刮刮卡需求: 每一位用户有三次刮刮卡的机会 本次刮刮卡的结果会覆盖上次的结果 刮刮卡的中奖几率呈现为递增的曲线(保证三次中必须有一次中奖) 刮出的结果包含按钮既(领取奖品 or 再来一次 ) 分享活动奖品升级(这里主要是微信分享的回调了) 我们自己的需求,今天就说怎么制作刮刮卡,有这样需求的可以找我要源码 第一.body创建Canvas <div class="info" id="prize"> <span id="prompt"

css3 canvas之刮刮卡效果

今天我有时间学习了一下html5新增的这个标签canvas,以前虽然经常写html5网页,可是都没用过这个标签.最近刚弄了一个h5微信送祝福的网页,差不多折腾了一个星期,所以我觉得我得系统的来学习一下html5和css3了. 好了,废话不多说,下面贴出我的代码. 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <ti

网页闯关游戏(riddle webgame)--H5刮刮卡的原理和实践

前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. 对于刮刮卡, 想必大家都很熟悉, 也很喜欢这种方式. 你可能会很好奇, 它是如何实现的呢? 本文将阐述其原理, 并结合具体实例来演示如何借助H5的canvas来实现类刮刮卡的效果. 展示效果: 网页闯关游戏入口(请狠狠地点击我, ^_^) http://magic.mmxfgame.com. H5刮刮卡的实例源自第六关--拜访东方不败的故

用c#开发微信 (16) 微活动 2 刮刮卡

微信营销是一种新型的营销模式,由于微信更重视用户之间的互动,故而这种营销推广不不能盲目地套用微博营销的单纯大量广告推送方式.这种方式在微信营销中的效果非常差,会令用户反感,继而取消去企业或商家的微信公众账号关注.对于企业来说,做微信推广重要的一个方面就是提高用户和公众账号之间的黏度,而微信刮刮卡就是其中最为常见的活动. 下面详细介绍: 一.使用 1. 新建一个刮刮卡的活动: 2. 奖项设置 3. 保存后,在微信里给公众号发一个“刮刮卡”的消息, 就会收到刮刮卡的内容,进入活动后,就可以刮奖了 二

HTML5实现类似刮刮卡的功能

HTML5实现类似刮刮卡的功能 有这样一个功能,当我们使用微信公众号,发送图片时......此处省略300字! 注意要点设置: 1.设置用户缩放:user-scalable=no|yes <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" /> 2.禁止拖动: docu

canvas实现移动端和PC端刮刮卡效果

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"

Android 刮刮卡

好久没有写博客了,今天有正好有时间,接下来为大家带来一款电商中要使用的刮刮卡项目,刮刮卡相信大家小时候都玩过,那个时候,可能大家使用的是小纸片的,现在也可以带大家重温小时候的美好时光,今天将这个刮刮卡的项目分享给大家,希望对大家有学习和工作上的帮助. 一:先上效果图 二:原理分析 1.创建一张你想要的bitmap大小,然后根据bitmap的大小,绘制一张画布在上面,然后重写onDraw()方法 2.在刮开面积的不断扩张中,计算扩张面的面积大小,当面积超过60%的时候,就清楚图层 3.下面的刮刮卡

Atitit .html5刮刮卡的gui实现总结

Atitit .html5刮刮卡的gui实现总结 #----两个案例canvas或者wScratchPad-1.4.4 1 #----1.添加panel  ,这个十mask div.....postion:absoluti..高度宽度都是100% 1 #---2.初始化wScratchPad 1 #-----判断抽奖机会已经用完and 遮罩挠完33%走自动清空mask.. 2 #-----设置mask图片加载后的事件(初始化悬浮图片top位置>>ajax开始>>加载bingo/no