菜鸟做HTML5小游戏 - 刮刮乐
继上篇翻翻乐之后,又来刮刮乐。还是先上效果图:
开始demo的世界:
1.css去绘制界面效果。(源码提供)
2.原理:要实现刮刮卡内容的出现,我用div做了背景层去显示刮出的内容结果【重点】。中间Canvas区域去实现刮刮的效果。
3.构建界面效果,背景层zj为挂出效果。Canvas去做动画
<div class="zj">
<canvas id="CanvasLe" width="280" height="140" style="margin-top:10px;"></canvas>
</div> <style>.zj{background:url("zj.png") no-repeat ;}</style>
4.开始动画
先绘制 ‘灰色’ ,然后在鼠标的移动事件Canavas.onmousemove去计算 滑动的坐标值,然后clearRect方法去清除该坐标的色素。
window.onload = function(){
init();
}
var imageWidth = "280";
var imageheight = "140";
function init(){
//定义绘画宽 高 //定义Canvas对象
var Canavas = document.getElementById("CanvasLe");
var Context2D = Canavas.getContext("2d"); var bool =true;
Context2D.fillStyle='#cccccc'; //设置覆盖层的颜色
Context2D.fillRect(0,0,imageWidth,imageheight); //设置覆盖的区域
//增加Canvas鼠标滑动事件
Canavas.onmousemove = function(e) {
var canvasOffset = $(Canavas).offset();
var canvasX = Math.floor(e.pageX - canvasOffset.left);
var canvasY = Math.floor(e.pageY - canvasOffset.top);
canvasY += parseInt(imageheight);
lottery(canvasX,canvasY,Context2D);
}
}
//刮刮函数
function lottery(x,y,c){
c.clearRect(x,y-imageheight,20,20);
}
好了,效果很明显可以根据滑动坐标清除色素块。
要是在移动手机设备上运行以上还不行,还需要加入触屏滑动事件touchmove。接下来就给去监听这个事件
Canavas.addEventListener('touchmove', function(event) {
// 如果这个元素的位置内只有一个手指的话
if (event.targetTouches.length == 1) {
event.preventDefault();// 阻止浏览器默认事件,重要
var touch = event.targetTouches[0];
// 把元素放在手指所在的位置
var canvasOffset = $(Canavas).offset();
var canvasX = Math.floor(touch.pageX - canvasOffset.left);
var canvasY = Math.floor(touch.pageY - canvasOffset.top);
lottery(touch.pageX,touch.pageY,Context2D);
}
}, false);
ok,大功告成。实现了刮刮卡的效果。
各位园友们可以进一步扩展,共同学习是进步的阶梯。
补充:谢谢各位园友的指出,赶紧修复源码。
测试都通过,遇到一个问题在 IE11中 background:url("s_bd.jpg") 为什么无效果,请各位高手给我指点指点,先谢谢
菜鸟做HTML5小游戏 - 刮刮乐的更多相关文章
- 菜鸟做HTML5小游戏 - 翻翻乐
记录下开放过程.做小游戏开发,又要跨平台,flash又不支持iPhone,html5是最好的选择. 先看看最后效果: 好了,开始demo. 1.准备工作: 图片素材(省略...最后代码一起打包) 了解 ...
- 使用PixiJS做一个小游戏
PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...
- 推荐10款超级有趣的HTML5小游戏
HTML5的发展速度比任何人的都想像都要更快.更加强大有效的和专业的解决方案已经被开发......甚至在游戏世界中!这里跟大家分享有10款超级趣味的HTML5游戏,希望大家能够喜欢! Kern Typ ...
- HTML5小游戏UI美化版
HTML5小游戏[是男人就下一百层]UI美化版 之前写的小游戏,要么就比较简单,要么就是比较难看,或者人物本身是不会动的. 结合了其它人的经验,研究了一下精灵运动,就写一个简单的小游戏来试一下. 介绍 ...
- 通通制作Html5小游戏——第二弹(仿flappy bird像素鸟)
亲爱的博友们,我又回来啦~因为我们技术宅的思想只有技术宅懂得,好不容易写了点好玩的东西发QQ空间,结果只有11的UV,0回复....10分钟ps一个女神的素描效果发QQ空间朋友圈,一大堆回复加赞,作为 ...
- Html5 小游戏 俄罗斯方块
导言 在一个风和日丽的一天,看完了疯狂HTML 5+CSS 3+JavaScript讲义,跟着做了书里最后一章的俄罗斯方块小游戏,并做了一些改进,作为自己前端学习的第一站. 游戏效果: 制作思路 因为 ...
- HTML5小游戏源码收藏
html5魅族创意的贪食蛇游戏源码下载 html5网页版打砖块小游戏源码下载 html5 3D立体魔方小游戏源码下载 html5网页版飞机躲避游戏源码下载 html5三国人物连连看游戏源码下载 js ...
- 原生js做h5小游戏之打砖块
前言 首先,先说明一下做这个系列的目的:其实主要源于博主希望熟练使用 canvas 的相关 api ,同时对小游戏的实现逻辑比较感兴趣,所以希望通过这一系列的小游戏来提升自身编程能力:关于 es6 语 ...
- HTML5小游戏之见缝插针
今天给大家带来的就是一款叫做<见缝插针>的游戏.有空你就往里插,直到你无处可插!看你能过多少关! 简洁大气 黑白搭配游戏画面非常的简洁,米白色的背景中央,放置着一个不断旋转的太阳状的球体, ...
随机推荐
- DPC定时器
KeInitializeTimer 初始化定时器 KeInitializeTimerEx 初始化定时器 KeSetTimer 开启定时器(只执行一次) KeSetTimerEx 开启定时器(可以设置循 ...
- 体验Lua
想用之和NGINX结合,终结公司混乱的NGINX配置 玩起来先,感觉很精简,很实用哟. print("hello world") a={,} b=a print(a==b,a~=b ...
- INNO setup 制作安装包
1.获取SQLserver安装路径vardbpath:string;rtn:boolean;rtn := RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWA ...
- android TextView 添加下划线
android Textview加下划线 由于新做的一个项目要求有字体带下划线效果,当时看了下其实可以通过图片伪造出那种视觉效果.但是为了体现点技术含量,于是我想用Textview带下划线的效果.方法 ...
- Java实现生命周期管理机制
先扯再说 最近一直在研究某个国产开源的MySQL数据库中间件,拉下其最新版的代码到eclipse后,启动起来,然后做各种测试和代码追踪:用完想要关闭它时,拉出它的STOP类想要运行时,发现这个类里赫然 ...
- JS-事件处理
1.一个简单的单击事件: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- EditText设置可以编辑和不可编辑状态
1.首先想到在xml中设置android:editable="false",但是如果想在代码中动态设置可编辑状态,没有找到对应的函数 2.然后尝试使用editText.setFoc ...
- 尝鲜党:Nexus5、6刷安卓M教程
说明: 进入recovery的命令:adb reboot recovery 进入bootloader的命令:adb reboot bootloader 概述 F:\Nexus5\AndroidM\ha ...
- C++ lambda 表达式传递的变量默认不可变
我遇到例如以下问题: int count=0; listener->onTouchMoved=[count](Touch* t,Event* e){ count++; log("onT ...
- OpenSSL之PKey的EVP封装
在Openssl中,非对称加密涉及到两个密钥.一个为公开的密钥(公钥),一个为非公开的密钥.而OpenSSL中非对称加密算法有RSA.DSA.ECC,他们的原理不同,因此其密钥结构不同.下面我们列出我 ...