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") 为什么无效果,请各位高手给我指点指点,先谢谢

    源码猛击 这里[修复]

  • 相关阅读:
    斐波那契数列
    进制转换为伪代码
    python模拟进程
    第十一周学习总结
    第十周学习总结
    第九周学习总结
    俄罗斯方块
    熟悉编程语言
    小学四则运算
    第八周学习总结
  • 原文地址:https://www.cnblogs.com/oceanworld/p/3459732.html
Copyright © 2011-2022 走看看