欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用HTML5的畫布Canvas實現(xiàn)刮刮卡效果

 更新時間:2015年09月06日 16:06:48   投稿:mrr  
大家都玩過刮刮樂吧,都想一夜暴富,本文給大家分享一款利用HTML5的畫布Canvas實現(xiàn)刮刮卡效果,需要的朋友可以參考下

先給大家展示效果:

查看演示   源碼下載

你玩過刮刮卡么?一不小心可以中獎的那種。今天我給大家分享一個基于HTML5技術(shù)實現(xiàn)的刮刮卡效果,在PC上只需按住鼠標,在手機上你只需按住指頭,輕輕刮去圖層就可以模擬真實的刮獎效果。

我們利用HTML5的畫布Canvas,結(jié)合其提供的API,在Canvas元素上繪制一個灰色蒙層,然后通過檢測用戶鼠標移到和手勢來繪制一個透明的圖形,這樣就能看到Canvas背景下的真實圖片,就達到刮刮卡效果。

HTML

我們只需要在頁面中加入canvas標簽元素,其他的就看javascript的了。注意canvas元素是HTML5才有的元素,運行在支持HTML5的現(xiàn)代瀏覽器上。

<canvas></canvas> 

Javascript

首先,我們要禁用頁面的鼠標選中拖動的事件,就是不運行執(zhí)行選中操作。

var bodyStyle = document.body.style; 
bodyStyle.mozUserSelect = 'none'; 
bodyStyle.webkitUserSelect = 'none'; 

接著我們定義圖片類,獲取canvas元素,并設置背景和位置屬性。我們在本例中用到兩張隨機照片,每次刷新隨機一張圖片作為背景。

var img = new Image(); 
var canvas = document.querySelector('canvas'); 
canvas.style.backgroundColor='transparent'; 
canvas.style.position = 'absolute'; 
var imgs = ['p_0.jpg','p_1.jpg']; 
var num = Math.floor(Math.random()*2); 
img.src = imgs[num]; 

然后進入主體,當檢測到圖片加載完的時候,首先定義一些屬性和函數(shù),函數(shù)layer()用來繪制一個灰色的正方形,eventDown()定義了按下事件eventUp()定義了松開事件,eventMove()定義了移動事件,其中當按下時,獲取坐標位移,并通過arc(x, y, 10, 0, Math.PI * 2)來繪制小圓點。

img.addEventListener('load', function(e) { 
 var ctx; 
 var w = img.width, 
  h = img.height; 
 var offsetX = canvas.offsetLeft, 
  offsetY = canvas.offsetTop; 
 var mousedown = false; 
 function layer(ctx) { 
  ctx.fillStyle = 'gray'; 
  ctx.fillRect(0, 0, w, h); 
 } 
 function eventDown(e){ 
  e.preventDefault(); 
  mousedown=true; 
 } 
 function eventUp(e){ 
  e.preventDefault(); 
  mousedown=false; 
 } 
 function eventMove(e){ 
  e.preventDefault(); 
  if(mousedown) { 
    if(e.changedTouches){ 
     e=e.changedTouches[e.changedTouches.length-1]; 
    } 
    var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX || 0, 
     y = (e.clientY + document.body.scrollTop || e.pageY) - offsetY || 0; 
    with(ctx) { 
     beginPath() 
     arc(x, y, 10, 0, Math.PI * 2);//繪制圓點 
     fill(); 
    } 
  } 
 } 
 //... 
}); 

最后,通過canvas調(diào)用以上函數(shù),繪制圖形,并且偵聽觸控及鼠標事件,調(diào)用相應的函數(shù),請看代碼:

img.addEventListener('load', function(e) { 
 //..接上段代碼 
 canvas.width=w; 
 canvas.height=h; 
 canvas.style.backgroundImage='url('+img.src+')'; 
 ctx=canvas.getContext('2d'); 
 ctx.fillStyle='transparent'; 
 ctx.fillRect(0, 0, w, h);//繪制矩形 
 layer(ctx); 
 ctx.globalCompositeOperation = 'destination-out'; 
 canvas.addEventListener('touchstart', eventDown); 
 canvas.addEventListener('touchend', eventUp); 
 canvas.addEventListener('touchmove', eventMove); 
 canvas.addEventListener('mousedown', eventDown); 
 canvas.addEventListener('mouseup', eventUp); 
 canvas.addEventListener('mousemove', eventMove); 

以上內(nèi)容僅供參考,大家可以結(jié)合實際情況,結(jié)合后臺程序和數(shù)據(jù)庫,完成一個真正的刮刮樂。以上內(nèi)容是我寫的利用HTML5的畫布Canvas實現(xiàn)刮刮卡效果,希望大家喜歡。

相關(guān)文章

  • 跨域解決之JSONP和CORS的詳細介紹

    跨域解決之JSONP和CORS的詳細介紹

    跨域常見的兩種方式,分別是jsonp和cors,這篇文章主要介紹了跨域解決之JSONP和CORS的詳細介紹,非常具有實用價值,需要的朋友可以參考下
    2018-11-11
  • JS實現(xiàn)仿微信支付彈窗功能

    JS實現(xiàn)仿微信支付彈窗功能

    這篇文章主要介紹了JS實現(xiàn)仿微信支付彈窗功能,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • 淺析JavaScript預編譯和暗示全局變量

    淺析JavaScript預編譯和暗示全局變量

    這篇文章主要介紹了JavaScript預編譯和暗示全局變量的相關(guān)資料,幫助大家更好的理解和學習JavaScript,感興趣的朋友可以了解下
    2020-09-09
  • 跟我學習javascript的函數(shù)和函數(shù)表達式

    跟我學習javascript的函數(shù)和函數(shù)表達式

    跟我學習javascript的函數(shù)和函數(shù)表達式,詳細介紹了函數(shù)表達式、命名函數(shù)表達式的方法,感興趣的小伙伴們可以參考一下
    2015-11-11
  • js添加綁定事件的方法

    js添加綁定事件的方法

    這篇文章主要為大家詳細介紹了js添加事件的通用方法,還為大家介紹了js綁定事件的常用方式,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 輸入自動提示搜索提示功能的javascript:sugggestion.js

    輸入自動提示搜索提示功能的javascript:sugggestion.js

    該js文件中的代碼實現(xiàn)了[輸入自動搜索提示]功能,如百度、google搜索框中輸入一些字符會以下拉列表形式給出一些提示,提高了用戶體驗
    2013-09-09
  • 基于HTML5上使用iScroll實現(xiàn)下拉刷新,上拉加載更多

    基于HTML5上使用iScroll實現(xiàn)下拉刷新,上拉加載更多

    本文主要介紹在HTML5中使用iScroll實現(xiàn)下拉刷新,上拉加載更多數(shù)據(jù)的方法,主要就是寫了兩個自定義函數(shù)pullDownAction和pullUpAction,分別在下拉和上拉的事件中調(diào)用他們。
    2016-05-05
  • js中數(shù)組的常用方法小結(jié)

    js中數(shù)組的常用方法小結(jié)

    這篇文章主要介紹了js中數(shù)組的常用方法,結(jié)合實例形式分析了js中的常用數(shù)組方法,如push、concat、pop、splice、reverse、join等功能與用法,需要的朋友可以參考下
    2016-12-12
  • JSON與js對象序列化實例詳解

    JSON與js對象序列化實例詳解

    這篇文章主要介紹了JSON與js對象序列化,結(jié)合實例形式詳細分析了JavaScript與JSON序列化操作的相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2017-03-03
  • Express框架中_router?對象數(shù)據(jù)結(jié)構(gòu)使用詳解

    Express框架中_router?對象數(shù)據(jù)結(jié)構(gòu)使用詳解

    這篇文章主要為大家介紹了Express框架中_router的對象數(shù)據(jù)結(jié)構(gòu)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論