zoukankan      html  css  js  c++  java
  • 菜鸟做HTML5小游戏

    继上篇翻翻乐之后,又来刮刮乐。还是先上效果图:

     

    开始demo的世界:

    1.css去绘制界面效果。(源码提供

    2.原理:要实现刮刮卡内容的出现,我用div做了背景层去显示刮出的内容结果【重点】。中间Canvas区域去实现刮刮的效果。

    3.构建界面效果,背景层zj为挂出效果。Canvas去做动画

    1  <div class="zj">
    2 <canvas id="CanvasLe" width="280" height="140" style="margin-top:10px;"></canvas>
    3  </div>
    4 
    5 <style>.zj{background:url("zj.png") no-repeat ;}</style>

    4.开始动画

    先绘制 ‘灰色’ ,然后在鼠标的移动事件Canavas.onmousemove去计算 滑动的坐标值,然后clearRect方法去清除该坐标的色素。

     1 window.onload = function(){
     2         init();
     3     }
     4     var imageWidth = "280";
     5     var imageheight = "140";
     6     function init(){
     7     //定义绘画宽 高
     8     
     9     //定义Canvas对象
    10     var Canavas = document.getElementById("CanvasLe");
    11     var Context2D = Canavas.getContext("2d");
    12         
    13     var bool =true;
    14     Context2D.fillStyle='#cccccc';    //设置覆盖层的颜色
    15     Context2D.fillRect(0,0,imageWidth,imageheight);    //设置覆盖的区域
    16 //增加Canvas鼠标滑动事件
    17     Canavas.onmousemove = function(e) {
    18         var canvasOffset = $(Canavas).offset();
    19         var canvasX = Math.floor(e.pageX - canvasOffset.left);
    20         var canvasY = Math.floor(e.pageY - canvasOffset.top);
    21         canvasY += parseInt(imageheight);
    22         lottery(canvasX,canvasY,Context2D);
    23     }
    24     }
    25 //刮刮函数
    26     function lottery(x,y,c){
    27         c.clearRect(x,y-imageheight,20,20);
    28     }

    好了,效果很明显可以根据滑动坐标清除色素块。

    要是在移动手机设备上运行以上还不行,还需要加入触屏滑动事件touchmove。接下来就给去监听这个事件

     1 Canavas.addEventListener('touchmove', function(event) {
     2         // 如果这个元素的位置内只有一个手指的话
     3         if (event.targetTouches.length == 1) {
     4             event.preventDefault();// 阻止浏览器默认事件,重要 
     5             var touch = event.targetTouches[0];
     6             // 把元素放在手指所在的位置
     7             var canvasOffset = $(Canavas).offset();
     8             var canvasX = Math.floor(touch.pageX - canvasOffset.left);
     9             var canvasY = Math.floor(touch.pageY - canvasOffset.top);
    10              lottery(touch.pageX,touch.pageY,Context2D);
    11         }
    12     }, false);

    ok,大功告成。实现了刮刮卡的效果。

    各位园友们可以进一步扩展,共同学习是进步的阶梯。

    补充:谢谢各位园友的指出,赶紧修复源码。

    测试都通过,遇到一个问题在 IE11中 background:url("s_bd.jpg") 为什么无效果,请各位高手给我指点指点,先谢谢

    源码猛击 这里[修复]

  • 相关阅读:
    轻量级数据库sqlite的使用
    Integer引发的思考
    css限制显示行数
    数据库 chapter 17 数据仓库与联机分析处理技术
    数据库 chapter 15 对象关系数据库系统
    数据库 chapter 16 XML数据库
    数据库 chapter 14 分布式数据库系统
    数据库 chapter 11 并发控制
    数据库 chapter 12 数据库管理系统
    数据库 chapter 13 数据库技术新发展
  • 原文地址:https://www.cnblogs.com/oceanworld/p/3459732.html
Copyright © 2011-2022 走看看