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

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

源码猛击 这里[修复]

转载于:https://www.cnblogs.com/oceanworld/p/3459732.html

菜鸟做HTML5小游戏 - 刮刮乐相关推荐

  1. 菜鸟做HTML5小游戏 - 翻翻乐

    记录下开放过程.做小游戏开发,又要跨平台,flash又不支持iPhone,html5是最好的选择. 先看看最后效果: 好了,开始demo. 1.准备工作: 图片素材(省略...最后代码一起打包) 了解 ...

  2. HTML5小游戏动手做(二):使用PIXI引擎制作坦克大战游戏

    这里写自定义目录标题 1. 简介 1.1 PIXI 简介 1.2 坦克大战游戏简介 2. PIXI 引擎入门 2.1 基本概念 2.1.1 舞台 Stage 2.1.2 容器 Container 2. ...

  3. HTML5小游戏动手做(一):简单的连连看

    从本篇起,我将在此展示制作一些HTML5小游戏的过程和经验.本文描述的是一个经典又简单的小游戏,连连看. 1. 计划 1.1 目标 快速建立一个连连看游戏原形. 能玩就行. 1.2 游戏特性介绍 游戏 ...

  4. 开发 HTML5 小游戏

    Html5小游戏 在介绍小游戏之前,先看一个框架 Phaser. Phaser 框架是一个 快速.免费且开源的 HTML5 游戏开发框架,它提供了 Canvas 和 WebGL 两种渲染方式,兼容 P ...

  5. 初识html5小游戏

    本次Html5小游戏使用createjs来开发.基本涵盖这个游戏的全部核心代码. 如下是主要用到的元素: createjs.SpriteSheet 创建雪碧图,将生成好的雪碧图读取出来 createj ...

  6. 使用jquery—Canvas实现html5小游戏——《坦克大战》

    目录 1.项目背景 2.项目展示 3.设计思路 3.1.坦克移动 3.2.坦克开火 3.3.击中坦克 4.实现代码 5.总结 1.项目背景 2021年春节期间在家无聊,正好又学过一些前端的知识,因此就 ...

  7. 使用PixiJS做一个小游戏

    PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...

  8. 前沿穿越——HTML5小游戏 制作技巧经验

    转 K米: 前沿穿越--HTML5小游戏 制作技巧&经验 hello~大家好,我是黑米! O(≧▽≦)O 今天我来跟大家分享一些动画实现的相关知识,希望大家能够支持(鞠躬-- 我很喜欢很喜欢看 ...

  9. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

最新文章

  1. mysql backdoor_Mysql UDF BackDoor
  2. mysql中外键的作用是什么_mysql外键基本功能与用法详解
  3. Java技术分享之变量命名
  4. 一个小小指针,竟把Linux内核攻陷了!
  5. 借力阿里云存储产品 延锋彼欧加速数字化重塑
  6. 架构之技术复杂度与业务复杂度
  7. linux逻辑表达式,循环结构,函数
  8. python入门之后须掌握的知识点(excel文件处理+邮件发送+实战:批量化发工资条)【二】
  9. Google 应用与游戏出海 7 月刊: 创意工具,让应用大放异彩
  10. F200——搭载基于模型设计的国产开源飞控系统无人机
  11. SaaS和和PaaS的概念
  12. 计算机英语听力,计算机英语词汇大全
  13. excel操作记录——条形图
  14. 麒麟服务器系统磁盘管理之lvm管理
  15. 高分一号数据处理(一):数据下载
  16. 牧师与魔鬼——动作分离版
  17. 自定义协议推送的设计
  18. 计算机大赛可以跨学校组队吗,大学生创新创业大赛可以跨校组队吗
  19. 可视化的Keil工程配置模板,一招提高单片机开发效率
  20. 最简单的8421码计算方法

热门文章

  1. 在农村有100万存款,算有钱人吗?
  2. 我以为信用卡多就是好事,谁知道……
  3. 黑色幽默:“新知青”电影《走着瞧》首映
  4. 《紫茗红菱》:“80后”成长的欢乐、疼痛与代价
  5. spi flash驱动
  6. linux系统内核参数配置优化,Linux服务器内核参数优化
  7. tp3.2 不能提交到action方法_什么是死锁,如何避免死锁(4种方法)
  8. mmseg java_MMSeg中文分词算法
  9. java数组如何相加_java数组排序,并将数组内的数据求和
  10. picturectrl控件中加载图片并显示_如何在EasyX窗体中显示图片