canvas實現的刮刮樂程式碼例項
分享一段程式碼例項,它利用canvas實現了刮刮樂效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> .demo { width: 320px; margin: 100px auto; } </style> </head> <body> <div class="main"> <div class="demo"> <canvas></canvas> </div> </div> <script> var image = new Image(); var canvas = document.querySelector("canvas"); var images = ["demo/js/img/huigu.jpg", "demo/js/img/zhuomian.jpg"]; var num = Math.floor(Math.random() * images.length); image.src = images[num]; image.addEventListener("load", function(e) { //在移動端上必須用DOM2級事件,才能用滑鼠等事件 var ctx; var w = image.width; var h = image.height; var offsetX = canvas.offsetLeft; //獲取畫布在瀏覽器視口的偏移量 var offsetY = canvas.offsetTop; var flag = false; function eventDown() { e.preventDefault(); //阻止滑鼠預設事件 flag = true; } function eventUp() { e.preventDefault(); flag = false; } function layout(ctx) { ctx.fillStyle = "gray"; //在畫布上加上一個圖層,用來遮蓋 ctx.fillRect(0, 0, w, h); } function eventMove(e) { e.preventDefault(); if (flag) { if (e.changedTouches) { //獲取手勢操作物件 e = e.changedTouches[e.changedTouches.length - 1]; } var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX; var y = (e.clientY + document.body.scrollTop || e.pageY) - offsetY; with(ctx) { //判斷當前物件 beginPath(); arc(x, y, 30, 0, Math.PI * 2); fill(); } } } canvas.width = w; canvas.height = h; canvas.style.backgroundImage = "url(" + image.src + ")"; ctx = canvas.getContext("2d"); ctx.fillRect(0, 0, w, h); layout(ctx); ctx.globalCompositeOperation = "destination-out"; //遮蓋行為 //pc端 canvas.addEventListener("mousedown", eventDown); canvas.addEventListener("mouseup", eventUp); canvas.addEventListener("mousemove", eventMove); //移動端 canvas.addEventListener("touchstart", eventDown); canvas.addEventListener("touchend", eventUp); canvas.addEventListener("touchmove", eventMove); }) </script> </body> </html>
相關文章
- canvas刮刮樂程式碼例項Canvas
- 如何在遊戲陪玩系統原始碼中實現“刮刮樂”效果?遊戲原始碼
- iOS:一用就上癮的刮刮樂檢視iOS
- L1-072 刮刮彩票 分數 20
- canvas載入效果程式碼例項Canvas
- canvas繪製扇形程式碼例項Canvas
- canvas原型鐘錶效果程式碼例項Canvas原型
- canvas繪製網格程式碼例項Canvas
- canvas氣泡上浮效果程式碼例項Canvas
- 蘋果提出一項防止iPhone刮傷的多重塗層新專利蘋果iPhone
- canvas繪製機器貓程式碼例項Canvas
- canvas繪製拋物線程式碼例項Canvas線程
- canvas translate()、scale()和rotate()方法程式碼例項Canvas
- canvas繪製箭頭效果程式碼例項Canvas
- canvas繪製圓形鐘錶程式碼例項Canvas
- html實現簡單ListViews效果的例項程式碼HTMLView
- 短視訊原始碼,每日任務通過刮卡的方式選擇原始碼
- html5 canvas 實現光線沿不規則路徑運動例項程式碼HTMLCanvas
- vuejs實現新增tag標籤程式碼例項VueJS
- 例項程式碼分享Python實現Linux監控PythonLinux
- MyCat分片:水平拆分例項解析和程式碼實現!
- 刮忌霖匚島匱朗盞姨鬧俸謔
- 正則實現個位數補零程式碼例項
- python 單一程式例項 實現Python
- canvas 例項之鬧鐘Canvas
- Python物件導向多型實現原理及程式碼例項Python物件多型
- 再提H5!即時遊戲的風又刮回來了?H5遊戲
- 「颳走」外星人!《星際52區》公測預刮卡活動現已開啟
- Python實現簡單網頁圖片抓取完整程式碼例項Python網頁
- dom操作程式碼例項
- css梯形程式碼例項CSS
- 127 PHP獲取網頁標題的3種實現方法程式碼例項PHP網頁
- HTML 使用表單標籤實現註冊頁面的例項程式碼HTML
- JavaScript in運算子程式碼例項JavaScript
- 設計模式例項程式碼設計模式
- table表格美化程式碼例項
- 純css tab選項卡程式碼例項CSS
- jQuery tab選項卡效果程式碼例項jQuery
- Vue例項方法之事件的實現Vue事件