DDR爱好者之家 Design By 杰米
本文实例为大家分享了js实现跳一跳小游戏的具体代码,供大家参考,具体内容如下
效果
流程分析
1、鼠标按下开始蓄力
2、鼠标松开,根据鼠标按下的时间让小球运动相应的距离
3、判断小球落点是否在平台内
4、如果在平台范围内,产生下一个平台,分数加10.如果不在游戏结束,判断分数是否大于历史最高分,更新历史最高分。
动画效果
5、鼠标按下小球所在平台要有蓄力效果,鼠标松开后慢慢恢复,
6、小球在空中的运动曲线要平滑
7、小球和平台要有3D效果
注意事项
8、运动涉及到计算器和延时器,要注意清除定时器以免扰乱动画效果
9、鼠标按下和松开为一个完整的流程,在小球运动完之前不能重复触发
10、确保小球运动的时间与鼠标按下的时间相关联
布局
<div class="wrap"> <h3 class="tit">鼠标按下蓄力,松开鼠标小球开始运动</h3> <h1>分数:</h1> <h2>历史最高:</h2> <div class="con"></div> <div class="blc1"></div> </div>
样式
* { margin: 0; padding: 0; } .wrap { height: 500px; position: relative; overflow: hidden; } .con { background-color: hotpink; /*左边的没有背景色,右边的加了背景色*/ background-image: radial-gradient(10px at 4px 4px, rgba(0, 0, 0, 0), rgba(2, 2, 2, 1)); width: 20px; height: 20px; border-radius: 50%; position: absolute; left: 30px; bottom: 30px; z-index: 2; } .blc1 { box-shadow: 10px 10px 7px #000; border-radius: 30%; width: 40px; height: 40px; background-color: midnightblue; position: absolute; left: 20px; bottom: 20px; } .tit { text-align: center; }
js
function randomInt(min, max) { //产生[min,max]范围内的整数 return Math.round(Math.random() * (max - min)) + min; } function randomColor() { //产生随机的颜色 var map = [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f']; var str = '#'; for (var i = 0; i < 6; i++) { var index = randomInt(0, 15); str += map[index]; } return str; } var wrap = document.querySelector('.wrap'); var con = document.querySelector('.con'); var oldtime = 0; //记录鼠标按下的时间 var timer2 = null; //小球平抛运动定时器 var timer3 = null; //鼠标按下变形定时器 var num = 0; //游戏成绩 var mouseD = false; //记录鼠标是否按下 var mouseUp = true; //记录鼠标是否松开 var h1 = document.querySelector('h1'); var h2 = document.querySelector('h2'); var max = localStorage.getItem('max'); var div = document.createElement('div'); //创建下一个平台 h2.innerText = '历史最高:' + localStorage.getItem('max'); //从浏览器数据库获取最高分 div.style.left = 35 + randomInt(30, 60) + 'px'; //初始化平台距离左边的值 var div_sex = randomInt(30, 70); //初始化平台大小,范围 div.style.bottom = 40 - div_sex / 2 + 'px'; //平台距离底部为小球底部减去平台 div.style.height = div_sex + 'px'; div.style.width = div_sex + 'px'; div.className = 'blc1'; //添加初始化样式 div.style.backgroundColor = randomColor(); //随机颜色 wrap.appendChild(div); //存入平台 document.onmousedown = function () { //监听页面点击事件 if (!mouseD) { //如果鼠标按下没有抬起 var blc = document.querySelectorAll('.blc1'); //获取所有平台 oldtime = Date.now(); //记录鼠标按下的时间 var target = blc[blc.length - 2]; //小球所在的平台 var down_c = 10; //平台最大下沉距离 var left = target.offsetLeft; //记录鼠标按下后下沉效果之前平台的left值 var bottom = 40 - target.offsetHeight / 2; //记录鼠标按下后下沉效果之前平台的bottom值 var con_l = con.offsetLeft; //记录鼠标按下后下沉效果之前小球的left值 var con_b = 30; //记录鼠标按下后下沉效果之前小球的bottom值 timer3 = setInterval(() => { //下沉效果定时器 down_c -= 0.03; //每一次变化0.03px if (down_c <= 0) { //最小值为0 down_c = 0.03; } target.style.boxShadow = down_c + 'px ' + down_c + 'px ' + down_c + 'px #000'; //边框阴影向里缩,实现3D效果 target.style.left = left + 10 - down_c + 'px'; target.style.bottom = bottom + -10 + down_c + 'px'; con.style.left = con_l + 10 - down_c + 'px'; con.style.bottom = con_b - 10 + down_c + 'px'; //小球和平台一起向右下角移动,配合阴影达到3D效果 }, 1); mouseD = true; //鼠标已经按下 mouseUp = false; //鼠标即将松开 } } document.onmouseup = function () { if (!mouseUp) { //如果没有触发mousedown事件不会执行以下代码 mouseUp = true; //锁定事件,小球运动结束前不能执行以下代码 clearInterval(timer3); //清除下沉动画 var timer4 = null; //上升动画 var blc = document.querySelectorAll('.blc1'); //获取所有平台 var target = blc[blc.length - 2]; //同下沉动画 var left = target.offsetLeft; var down_time = 0; var down_c = 0; var click_time = Date.now() - oldtime; //鼠标按下的时间 var bottom = 40 - target.offsetHeight / 2 - (click_time * 0.03 > 10 "_blank" href="https://www.jb51.net/Special/991.htm">C++经典小游戏汇总python经典小游戏汇总
python俄罗斯方块游戏集合
JavaScript经典游戏 玩不停
java经典小游戏汇总
javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
更新日志
2024年11月20日
2024年11月20日
- 群星《一人一首成名曲》1998 台湾金碟珍藏版[WAV+CUE][1.1G]
- 陈百强2024-《凝望》头版限量编号MQA-UHQCD[WAV+CUE]
- 测试示范《监听天碟3》头版限量编号LECD[WAV+CUE]
- 陈瑞《爱你到天荒地老HQ》头版限量[低速原抓WAV+CUE]
- 徐小凤 《徐小凤殿堂18首》24K金碟[WAV+CUE]
- 保时捷原厂车载爆棚动态试音碟《Panamera_Soundtrack》DTS[WAV分轨][1G]
- 容祖儿《小小》香港首版 [WAV+CUE][1.1G]
- 莫文蔚《拉活…》SONY [WAV+CUE][1G]
- Beyond《极品天碟》LPCD45II首批限量版[WAV+CUE][1.7G]
- HIFI示范巅峰之作《情解药·Hi-Fi心魂》2CD[WAV+CUE]
- 房东的猫2021-关于彻夜不眠的事情(EP)[青柴文化][WAV+CUE]
- 群星.1993-一曲成名·青春无悔【飞碟】【WAV+CUE】
- 张芸京.2016-失败的高歌【泡耳音乐】【WAV+CUE】
- 天籁女声《2024第31届上海国际高端音影展纪念CD》[WAV+CUE][1.1G]
- 姚斯婷 《敢爱敢做》头版限量编号24K金碟[低速原抓WAV+CUE][1.2G]