HTML5 创建手机滚珠子小游戏 (一)
来源:互联网 发布:股票1272战法源码指标 编辑:程序博客网 时间:2024/06/10 21:07
人生第一次写技术博客,还是真是相当艰辛啊,望各位看官多多包涵。
首先说一下为什么会有这个想法,因为在偶然之间突然发现HTML5中的一个新特性——DeviceMotionEvent,支持浏览器去探测手机的重力感应,因此脑子灵光一闪就想玩一下这个小技术点,最后确定开发一个简单小游戏——手机滚珠子。游戏来源于一个安卓游戏,市场已经有很多个版本了,各位可去百度或谷歌一下。
现在说说我的开发思路,由于是初学者,所以又害怕自己不够坚持写完这个小游戏,所以写篇博客监督下自己,顺便看看自己的进度。
第一,写个HTML5模板页面,并且测试一下浏览器是否支持DeviceMotionEvent属性,代码大概如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<title>HTML 5实现手机滚珠子</title>
</head>
<body>
<script>
if(window.DeviceMotionEvent){
window.addEventListener("devicemotion",deviceMotionHandler,false);
}else{
alert("您的浏览器不支持重力测试!");
}
</script>
</body>
</html>
第二,开始写好页面元素,包括背景,小球以及挡板等。
下面代码放在body中:
<div id="lineBox">
<div class="lineH120 line"></div>
</div>
<div id="ballBox">
<div class="ballLight"></div>
</div>
下面为CSS样式代码:
body{
background-color:#dcd7d0;
background-image: -webkit-radial-gradient(circle, rgba(218, 212, 205, 0.11) 0%, rgba(204, 192, 177, 1));
background-image: radialgradient(circle, rgba(218, 212, 205, 0.11) 0%, rgba(204, 192, 177, 1));
font-family:Microsoft Yahei;
margin:0 auto;
padding:0;
text-align:center;
font-size:14px;
color:#636363;
overflow:hidden;
max-width:960px;
height:100%;
}
#ballBox{
background-image: -webkit-radial-gradient(circle, rgba(202, 202, 202, 0.11) 0%, rgba(167, 163, 158, 1));
background-image: radialgradient(circle, rgba(202, 202, 202, 0.11) 0%, rgba(167, 163, 158, 1));
width:60px;
height:60px;
position:absolute;
left:0;
top:0;
box-shadow:2px -2px 4px #999;
border-radius:60px;
}
.ballLight{
width: 22px;
height: 27px;
border-radius: 120px;
opacity: 0.2;
margin-left: 3px;
margin-top: 17px;
background: -webkit-radial-gradient(circle, rgba(255, 253, 253, 0.74) 60%, rgba(255, 253, 250, 0.06));
}
#lineBox .line{
position:absolute;
left:0;
top:0;
background:#000;
}
#lineBox .lineH120{
height:120px;
width:8px;
left:200px;
}
最后,就是书写JS脚本,先是得到手机重力感应的三个方向X,Y,Z,如下图所示:
然后将X,Y,Z的进行十进制转换,最后将珠子的左偏量和上偏量赋值即可,代码如下:
var last_update = 0;
var x = 0,y = 0,z = 0;
var ball = document.getElementById("ballBox");
function deviceMotionHandler(eventData){
var acceleration = eventData.accelerationIncludingGravity;
x = parseInt(acceleration.x,10);
y = parseInt(acceleration.y,10);
z = parseInt(acceleration.z,10);
var left = $("#ballBox").offset().left - x*10 <= 0 ? 0:$("#ballBox").offset().left - x*10;
var top = $("#ballBox").offset().top + y*10 <= 0 ? 0:$("#ballBox").offset().top + y*10;
top = top >= document.documentElement.clientHeight-60 ? document.documentElement.clientHeight-60:top;
left = left >= document.body.clientWidth-60 ? document.body.clientWidth-60:left;
var lines = $("#lineBox .line");
$.each(lines,function(index,line){
var lineLeft = $(line).offset().left;
var lineTop = $(line).offset().top;
$("#testGame").append("<br>"+"lineLeft:"+lineLeft+",lineTop:"+lineTop+"<br> lineWidth:"+$(line).width());
if($(line).attr("class").indexOf("lineH") >= 0){
var w = $(line).height();
if(top <= w){
if(left >= lineLeft-60 && left <lineLeft + 8){
left = lineLeft - 65;
}else if(left >= lineLeft + 8 && left <= lineLeft + 68){
left = lineLeft + 10;
}
}
}else if($(line).attr("class").indexOf("lineW") >= 0){
if(lineTop > top){
top = lineTop;
}
}else if($(line).attr("class").indexOf("lineS") >= 0){
}
});
}
}
效果图:
这只是初步可以完成珠子自由在屏幕里滚动,demo地址请用手机扫描下面的二维码进行访问。
十分感谢各位看官的观看,第一次写博客还是有很多不懂的,请各位见谅!
邱疯子,人生就是要不断疯癫,要不如何承受生活给予我们的颠簸。
- HTML5 创建手机滚珠子小游戏 (一)
- 用html5创建小游戏经验总结
- html5小游戏(-)待续
- 用html5编写的一款小游戏(一)
- HTML5小游戏研究(四):完结:增加多个关卡,手机支持, 记分牌
- html5 小游戏
- HTML5小游戏
- HTML5小游戏研究(一):canvas初探,雏形:方块跳跃障碍
- 子查询(一)创建表
- Html5+css3+angularjs+jquery+webAPi 开发手机web(一)
- HTML5经典小游戏之坦克(二)
- HTML5 经典小游戏之坦克(二)
- (10)HTML5-CSS网页小游戏
- 【coco2d-html5简单游戏开发】一、连锁反应小游戏
- 经典培训小游戏(一)
- Unity 小游戏练习(一)
- jquery mobile + html5 手机app表单跨域提交实例(手机app开发html5 juqery moblie phonegap系列一)
- html5之phonegap环境搭建、创建项目(一)
- Android 自定义权限
- 中国大数据技术与产业发展白皮书——2.5金融与大数据(读书笔记)
- AJAX步步精心系列(一)AJAX简介
- 常见,常用的名词缩写 20131224
- Azure Storage架构介绍
- HTML5 创建手机滚珠子小游戏 (一)
- windows注册表
- 使用 jxl 导出Excel
- 第五届蓝桥杯—— 基础练习:杨辉三角形
- Java DEBUG 调试的方法
- 数据库集群的技术指标
- matlab图形加注功能
- Android事件监听器(Event Listener)
- Kali Linux渗透测试实战 2.1 DNS信息收集