pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

HTML5+CSS3實例 :canvas 模擬實現電子彩票刮刮樂代碼

今天給大家帶來一個刮刮樂的小例子~基于HTML5 canvas的,非常具有使用價值,有興趣的可以了解一下。

今天給大家帶來一個刮刮樂的小例子~基于HTML5 canvas的,有興趣的可以改成Android版本的,或者其他的~

效果圖:

貼一張我中500w的照片,咋辦啊,怎么花呢~

好了,下面開始原理:

1、刮獎區域兩個Canvas,一個是front , 一個back ,front遮蓋住下面的canvas。

2、canvas默認填充了一個矩形,將下面canvas效果圖遮蓋,然后監聽mouse事件,根據mousemove的x,y坐標,進行擦出front canvas上的矩形區域,然后顯示出下面的canvas的效果圖。

很簡單把~嘿嘿~

1、HTML文件內容:

<!DOCTYPE html>  
<html>  
<head>  
    <title></title>  
    <meta charset="utf-8">  
  
    <script type="text/javascript" src="../../jquery-1.8.3.js"></script>  
    <script type="text/javascript" src="canvas2d.js"></script>  
  
    <script type="text/javascript" src="GuaGuaLe2.js"></script>  
  
    <script type="text/javascript">  
  
        $(function ()  
        {  
            var guaguale = new GuaGuaLe("front", "back");  
            guaguale.init({msg: "¥5000000.00"});  
        });  
    </script>  
    <style type="text/css">  
  
  
        body  
        {  
            background: url("s_bd.jpg") repeat 0 0;  
        }  
  
        .container  
        {  
            position: relative;  
            width: 400px;  
            height: 160px;  
            margin: 100px auto 0;  
            background: url(s_title.png) no-repeat 0 0;  
            background-size: 100% 100%;  
        }  
  
        #front, #back  
        {  
            position: absolute;  
            width: 200px;  
            left: 50%;  
            top: 100%;  
            margin-left: -130px;  
            height: 80px;  
            border-radius: 5px;  
            border: 1px solid #444;  
        }  
  
    </style>  
  
</head>  
<body>  
  
<div class="container">  
    <canvas id="back" width="200" height="80"></canvas>  
    <canvas id="front" width="200" height="80"></canvas>  
</div>  
  
  
</body>  
</html>  

2、首先我利用了一個以前寫的canvas輔助類,留下來今天要用的一些方法:

/** 
 * Created with JetBrains WebStorm. 
 * User: zhy 
 * Date: 13-12-17 
 * Time: 下午9:42 
 * To change this template use File | Settings | File Templates. 
 */  
  
function Canvas2D($canvas)  
{  
    var context = $canvas[0].getContext("2d"),  
        width = $canvas[0].width,  
        height = $canvas[0].height,  
        pageOffset = $canvas.offset();  
  
  
    context.font = "24px Verdana, Geneva, sans-serif";  
    context.textBaseline = "top";  
  
  
    /** 
     * 繪制矩形 
     * @param start 
     * @param end 
     * @param isFill 
     */  
    this.drawRect = function (start, end, isFill)  
    {  
        var w = end.x - start.x , h = end.y - start.y;  
        if (isFill)  
        {  
            context.fillRect(start.x, start.y, w, h);  
        }  
        else  
        {  
            context.strokeRect(start.x, start.y, w, h);  
        }  
    };  
  
    /** 
     * 根據書寫的文本,得到該文本在canvas上書寫的中心位置的左上角坐標 
     * @param text 
     * @returns {{x: number, y: number}} 
     */  
    this.caculateTextCenterPos = function (text)  
    {  
        var metrics = context.measureText(text);  
        console.log(metrics);  
//        context.font = fontSize + "px Verdana, Geneva, sans-serif";  
        var textWidth = metrics.width;  
        var textHeight = parseInt(context.font);  
  
        return {  
            x: width / 2 - textWidth / 2,  
            y: height / 2 - textHeight / 2  
        };  
    }  
    this.width = function ()  
    {  
        return width;  
    }  
    this.height = function ()  
    {  
        return height;  
    }  
    this.resetOffset = function ()  
    {  
        pageOffset = $canvas.offset();  
    }  
    /** 
     * 當屏幕大小發生變化,重新計算offset 
     */  
    $(window).resize(function ()  
    {  
        pageOffset = $canvas.offset();  
    });  
  
    /** 
     * 將頁面上的左邊轉化為canvas中的坐標 
     * @param pageX 
     * @param pageY 
     * @returns {{x: number, y: number}} 
     */  
    this.getCanvasPoint = function (pageX, pageY)  
    {  
        return{  
            x: pageX - pageOffset.left,  
            y: pageY - pageOffset.top  
        }  
    }  
    /** 
     * 清除區域,此用戶鼠標擦出刮獎涂層 
     * @param start 
     * @returns {*} 
     */  
    this.clearRect = function (start)  
    {  
        context.clearRect(start.x, start.y, 10, 10);  
        return this;  
    };  
  
    /** 
     *將文本繪制到canvas的中間 
     * @param text 
     * @param fill 
     */  
    this.drawTextInCenter = function (text, fill)  
    {  
        var point = this.caculateTextCenterPos(text);  
        if (fill)  
        {  
            context.fillText(text, point.x, point.y);  
        }  
        else  
        {  
            context.strokeText(text, point.x, point.y);  
        }  
    };  
    /** 
     * 設置畫筆寬度 
     * @param newWidth 
     * @returns {*} 
     */  
    this.penWidth = function (newWidth)  
    {  
        if (arguments.length)  
        {  
            context.lineWidth = newWidth;  
            return this;  
        }  
        return context.lineWidth;  
    };  
  
    /** 
     * 設置畫筆顏色 
     * @param newColor 
     * @returns {*} 
     */  
    this.penColor = function (newColor)  
    {  
        if (arguments.length)  
        {  
            context.strokeStyle = newColor;  
            context.fillStyle = newColor;  
            return this;  
        }  
  
        return context.strokeStyle;  
    };  
  
    /** 
     * 設置字體大小 
     * @param fontSize 
     * @returns {*} 
     */  
    this.fontSize = function (fontSize)  
    {  
        if (arguments.length)  
        {  
            context.font = fontSize + "px Verdana, Geneva, sans-serif";  
  
            return this;  
        }  
  
        return context.fontSize;  
    }  
  
  
}  

這個類也就對Canvas對象進行了簡單的封裝,設置參數,繪制圖形什么的,比較簡單,大家可以完善下這個類~

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

本文給大家分享一個demo基于HTML5+CSS3 實現靈動的動畫 TAB 切換效果,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
最近在做大作業的時候需要做一個彈幕播放器,今天小編給大家分享基于HTML使用canvas實現彈幕功能,需要的的朋友參考下吧
移動前端開發中添加一些webkit專屬的HTML5頭部標簽,幫助瀏覽器更好解析HTML代碼,更好地將移動web前端頁面表現出來。本文整理一些常用的meta標簽,需要的朋友可以參考下
本篇文章主要介紹了html 基于 canvas 實現的一個截圖小demo,具有一定的參考價值,有興趣的可以了解一下
對于css的二維世界,相信大家都不陌生。在二維的世界里,我們可以對元素設置寬高、位置、旋轉、背景等等。在css三維世界里,擴展出了一個z軸,這個z軸垂直于屏幕并指向外面。下面
本篇文章主要介紹了3D立方體旋轉動畫實例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 | 咖啡加盟,咖啡店加盟连锁品牌-卡小逗| 软文发布-新闻发布推广平台-代写文章-网络广告营销-自助发稿公司媒介星 | 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 河南膏药贴牌-膏药代加工-膏药oem厂家-洛阳今世康医药科技有限公司 | 博博会2021_中国博物馆及相关产品与技术博览会【博博会】 | 全自动固相萃取仪_高通量真空平行浓缩仪-勤业永为 | 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 | 车载加油机品牌_ 柴油加油机厂家| 太空舱_民宿太空舱厂家_移动房屋太空舱价格-豪品建筑 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | 软膜天花_软膜灯箱_首选乐创品牌_一站式天花软膜材料供应商! | 排烟防火阀-消防排烟风机-正压送风口-厂家-价格-哪家好-德州鑫港旺通风设备有限公司 | 云杂志网-学术期刊-首页 | 电子天平-华志电子天平厂家| 密集架-手摇-智能-移动-价格_内蒙古档案密集架生产厂家 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | 浙江富广阀门有限公司| 合肥宠物店装修_合肥宠物美容院装修_合肥宠物医院设计装修公司-安徽盛世和居装饰 | 南京试剂|化学试剂|分析试剂|实验试剂|cas号查询-专业60年试剂销售企业 | 氧化锆陶瓷_氧化锆陶瓷加工_氧化锆陶瓷生产厂家-康柏工业陶瓷有限公司 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 中药二氧化硫测定仪,食品二氧化硫测定仪|俊腾百科 | 广州物流公司_广州货运公司_广州回程车运输 - 万信物流 | 德州万泰装饰 - 万泰装饰装修设计软装家居馆 | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | 温泉机设备|温泉小镇规划设计|碳酸泉设备 - 大连连邦温泉科技 | pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 西门子气候补偿器,锅炉气候补偿器-陕西沃信机电工程有限公司 | 模型公司_模型制作_沙盘模型报价-中国模型网 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | 博客-悦享汽车品质生活| 咖啡加盟,咖啡店加盟连锁品牌-卡小逗 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 全钢实验台,实验室工作台厂家-无锡市辰之航装饰材料有限公司 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) |