首页 > 网站 > WEB开发 > 正文

刮刮卡刮奖效果

2024-04-27 14:20:01
字体:
来源:转载
供稿:网友

刮刮卡刮奖效果

//代码框架<div class="content-box">    <div id="demo1" class="scratchpad"></div>    <div id="demo1-percent">&nbsp;</div>    <script type="text/javascript">                $('#demo1').wScratchPad({                      size:25, //笔刷大小                      fg: './images/canvas-image.png',//图片背景                      bg: './images/openPRize.png',//中奖图片                     // realtime    : true,                     'cursor': 'crosshair',//刮奖橡皮图片                     scratchDown: function(e, percent){                             $(this.canvas).CSS('margin-right', $(this.canvas).css('margin-right') == "0px" ? "1px" : "0px");                      },                     scratchMove: function(e, percent){                            $(this.canvas).css('margin-right', $(this.canvas).css('margin-right') == "0px" ? "1px" : "0px");                              if (percent > 5) {                                   this.clear();                                   $('#infor-btn').addClass("infor-select");                                   setTimeout("xxx()",1000)                                 //  $('#demo1-percent').html("<img src='images/area-open.png' />");                                  // $('#demo1-percent').css("background",'url(images/area.png) no-repeat scroll')                                            }                       },                scratchUp: function(e, percent){                       $(this.canvas).css('margin-right', $(this.canvas).css('margin-right') == "0px" ? "1px" : "0px");                 }        });        function xxx(){                $('#demo1-percent').html("<img src='images/area-open.png' />");        }  </script>   </div>
.scratchpad {height: 178px;position: absolute;right: 6px;top: 110px;width: 294px;}

/*插件框架*//*! wScratchPad - v2.1.0 - 2014-04-14 */ ! function(a) {    "use strict";    function b(b, c) {        this.$el = a(b),        this.options = c,        this.init = !1,        this.enabled = !0,        this._generate()    }    b.prototype = {        _generate: function() {            return a.support.canvas ? (this.canvas = document.createElement("canvas"), this.ctx = this.canvas.getContext("2d"), "static" === this.$el.css("position") && this.$el.css("position", "relative"), this.$img = a('<img src=""/>').attr("crossOrigin", "").css({                position: "absolute",                width: "100%",                height: "100%"            }), this.$scratchpad = a(this.canvas).css({                position: "absolute",                width: "100%",                height: "100%"            }), this.$scratchpad.bindMobileEvents(), this.$scratchpad.mousedown(a.proxy(function(b) {                return this.enabled ? (this.canvasOffset = a(this.canvas).offset(), this.scratch = !0, void this._scratchFunc(b, "Down")) : !0            },            this)).mousemove(a.proxy(function(a) {                this.scratch && this._scratchFunc(a, "Move")            },            this)).mouseup(a.proxy(function(a) {                this.scratch && (this.scratch = !1, this._scratchFunc(a, "Up"))            },            this)), this._setOptions(), this.$el.append(this.$img).append(this.$scratchpad), this.init = !0, void this.reset()) : (this.$el.append("Canvas is not supported in this browser."), !0)        },        reset: function() {            var b = this,            c = Math.ceil(this.$el.innerWidth()),            d = Math.ceil(this.$el.innerHeight()),            e = window.devicePixelRatio || 1;            this.pixels = c * d,            this.$scratchpad.attr("width", c).attr("height", d),            this.canvas.setAttribute("width", c * e),            this.canvas.setAttribute("height", d * e),            this.ctx.scale(e, e),            this.pixels = c * e * d * e,            this.$img.hide(),            this.options.fg && ("#" === this.options.fg.charAt(0) ? (this.ctx.fillStyle = this.options.fg, this.ctx.beginPath(), this.ctx.rect(0, 0, c, d), this.ctx.fill(), this.$img.show()) : a(new Image).attr("src", this.options.fg).load(function() {                b.ctx.drawImage(this, 0, 0, c, d),                b.$img.show()            })),            //setTimeout(function(){            this.options.bg && ("#" === this.options.bg.charAt(0) ? this.$el.css("backgroundColor", this.options.bg) : (this.$el.css("backgroundColor", ""), this.$img.attr("src", this.options.bg)))//中奖图片            //}, 300)        },        clear: function() {            this.ctx.clearRect(0, 0, Math.ceil(this.$el.innerWidth()), Math.ceil(this.$el.innerHeight()))        },        enable: function(a) {            this.enabled = a === !0 ? !0: !1        },        destroy: function() {            this.$el.children().remove(),            a.removeData(this.$el, "wScratchPad")        },        _setOptions: function() {            var a,            b;            for (a in this.options) this.options[a] = this.$el.attr("data-" + a) || this.options[a],            b = "set" + a.charAt(0).toUpperCase() + a.substring(1),            this[b] && this[b](this.options[a])        },        setBg: function() {            this.init && this.reset()        },        setFg: function() {            this.setBg()        },        setCursor: function(a) {            this.$el.css("cursor", a)        },        _scratchFunc: function(a, b) {            a.pageX = Math.floor(a.pageX - this.canvasOffset.left),            a.pageY = Math.floor(a.pageY - this.canvasOffset.top),            this["_scratch" + b](a),            (this.options.realtime || "Up" === b) && this.options["scratch" + b] && this.options["scratch" + b].apply(this, [a, this._scratchPercent()])        },        _scratchPercent: function() {            for (var a = 0, b = this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height), c = 0, d = b.data.length; d > c; c += 4) 0 === b.data[c] && 0 === b.data[c + 1] && 0 === b.data[c + 2] && 0 === b.data[c + 3] && a++;            return a / this.pixels * 100        },        _scratchDown: function(a) {            this.ctx.globalCompositeOperation = "destination-out",            this.ctx.lineJoin = "round",            this.ctx.lineCap = "round",            this.ctx.strokeStyle = this.options.color,            this.ctx.lineWidth = this.options.size,            this.ctx.beginPath(),            this.ctx.arc(a.pageX, a.pageY, this.options.size / 2, 0, 2 * Math.PI, !0),            this.ctx.closePath(),            this.ctx.fill(),            this.ctx.beginPath(),            this.ctx.moveTo(a.pageX, a.pageY)        },        _scratchMove: function(a) {            this.ctx.lineTo(a.pageX, a.pageY),            this.ctx.stroke()        },        _scratchUp: function() {            this.ctx.closePath()        }    },    a.support.canvas = document.createElement("canvas").getContext,    a.fn.wScratchPad = function(c, d) {        function e() {            var d = a.data(this, "wScratchPad");            return d || (d = new b(this, a.extend(!0, {},            c)), a.data(this, "wScratchPad", d)),            d        }        if ("string" == typeof c) {            var f,            g = [],            h = (void 0 !== d ? "set": "get") + c.charAt(0).toUpperCase() + c.substring(1),            i = function() {                f.options[c] && (f.options[c] = d),                f[h] && f[h].apply(f, [d])            },            j = function() {                return f[h] ? f[h].apply(f, [d]) : f.options[c] ? f.options[c] : void 0            },            k = function() {                f = a.data(this, "wScratchPad"),                f && (f[c] ? f[c].apply(f, [d]) : void 0 !== d ? i() : g.push(j()))            };            return this.each(k),            g.length ? 1 === g.length ? g[0] : g: this        }        return c = a.extend({},        a.fn.wScratchPad.defaults, c),        this.each(e)    },    a.fn.wScratchPad.defaults = {        size: 5,
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表