canvas教程

HTML5 Canvas实战之刮奖效果(2)

字号+ 作者:H5之家 来源:H5之家 2017-11-11 15:26 我要评论( )

这里用到了canvas的径向渐变,在鼠标从标处绘制一个圆形,代码如下: drawPoint: function (x, y) {this.maskCtx.beginPath();var radgrad = this.maskCtx.createRadialGradient(x, y, 0, x, y, 30);radgrad.addCol

这里用到了canvas的径向渐变,在鼠标从标处绘制一个圆形,代码如下:

drawPoint: function (x, y) { this.maskCtx.beginPath(); var radgrad = this.maskCtx.createRadialGradient(x, y, 0, x, y, 30); radgrad.addColorStop(0, 'rgba(0,0,0,0.6)'); radgrad.addColorStop(1, 'rgba(255, 255, 255, 0)'); this.maskCtx.fillStyle = radgrad; this.maskCtx.arc(x, y, 30, 0, Math.PI * 2, true); this.maskCtx.fill(); if (this.drawPercentCallback) { this.drawPercentCallback.call(null, this.getTransparentPercent(this.maskCtx, this.width, this.height)); } } (7)涂抹区域百分比

在很多时候,我们还需要知道用户涂抹了多少然后进行下一步交互,如当用户涂抹了80%后,才允许下一张显示。

这个百分比如何计算呢?其实很简单,我们可以用getImageData方法到画布上指定矩形的像素数据,由于每个像素都是用rgba表示的,而涂抹过的区域是透明的,所以我们只需要判断alpha通道的值就可以知道是否透明。代码如下:

getTransparentPercent: function(ctx, width, height) { var imgData = ctx.getImageData(0, 0, width, height), pixles = imgData.data, transPixs = []; for (var i = 0, j = pixles.length; i < j; i += 4) { var a = pixles[i + 3]; if (a < 128) { transPixs.push(i); } } return (transPixs.length / (pixles.length / 4) * 100).toFixed(2); } (8)调用入口init

最后再提供一个入口用来进行绘制和重置,代码如下:

init: function (lottery, lotteryType) { this.lottery = lottery; this.lotteryType = lotteryType || 'image'; this.drawLottery(); }

至此,关键代码全部讲解完了。

 

延伸阅读:

返回到首页 返回到编程大巴

  • Win32
  • OpenGL
  • ASP.NET MVC

  • ASP.NET MVC
  • cocos2d-x
  • WCF
  • Linq
  • Android
  • QT
  • MFC
  • JQuery
  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • canvas怎么设置鼠标事件?怎么获取里面的点?

      canvas怎么设置鼠标事件?怎么获取里面的点?

      2017-11-11 16:00

    • 如何通过HTMl5 Canvas实现圆形进度条并显示数字百分比效果?

      如何通过HTMl5 Canvas实现圆形进度条并显示数字百分比效果?

      2017-11-11 14:01

    • canvas 视频教程

      canvas 视频教程

      2017-11-11 12:03

    • Ajax跨域、Json跨域、Socket跨域和Canvas跨域等同源策略限制的解

      Ajax跨域、Json跨域、Socket跨域和Canvas跨域等同源策略限制的解

      2017-11-11 08:07

    网友点评
    s