js实现简单掷骰子效果


Posted in Javascript onOctober 24, 2019

本案例要实现的掷骰子效果:

点击按钮,使骰子转动起来,转动随机时间之后,自动停止在某一个点数上。

思路:

点击按钮之后,将原本静态的骰子图片替换为一个动态转动的gif图片;
创建定时器,实现随机时间之后,动态的图片随机替换为1~6点图片的任意一张图片。

注意:

1、要考虑用户点击一次按钮后再连续多次点击按钮的情况。
2、为了防止不必要的问题,需要设置使定时器执行完毕一次之后,再点击按钮才有效。
3、这里设置了一个开关:
用户点击按钮时,先判断开关是否关闭,如未关闭,可执行函数内容;
若开关已关闭,则不执行函数体,即没有任何效果。

css部分

*{margin:0; padding:0}
#container{padding:10px;width:200px;margin:auto;height:200px;border:orange solid 1px; border-radius:8px;}
#dice{width:200px;height:200px;}
#command{margin:auto;width:100px;}
#command input{width:100px;height:30px;border:#ccc solid 1px;border-radius:8px;}

html部分

<div id="container">
  <img src="img/dice_1.png" id="dice" alt="">
</div>
<div id="command">
  <input type="button" onclick="shake();" value="摇一摇">
</div>

js部分

// 封装函数,便于通过id获取元素
function $(id) {
 return document.getElementById(id);
}

// 生成随机数
function rand(min,max){
 if (min>max) {
 var mid = min;
 min = max;
 max = mid;
 }
 //65<=Math.random()*26+65<26+65
 return parseInt(Math.random()*(max-min+1)+min);
}

//创建一个开关,默认为true(打开状态)
var oPlay = true;

//点击事件
function shake() {
 if(oPlay){ //判断开关的状态,若为true,执行下边的内容
 oPlay = false; //开始执行后,关闭开关
 $("dice").src = "img/diceDynamic.gif"; //将静态图替换为动图
 
 //随机时间后,将动态图替换为随机点数的图片
 var timer = setTimeout(function(){ 
  $("dice").src = "img/dice_" + rand(1,6) + ".png";
  oPlay = true; //执行完毕后,再打开开关
 },rand(500,3000));
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
几个高效,简洁的字符处理函数
Apr 12 Javascript
不同浏览器的怪癖小结
Jul 11 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
Oct 22 Javascript
防止xss和sql注入:JS特殊字符过滤正则
Apr 18 Javascript
jQuery使用之处理页面元素用法实例
Jan 19 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
Aug 25 Javascript
详解Angular 自定义结构指令
Jun 21 Javascript
vue组件中的数据传递方法
May 14 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
Apr 11 Javascript
vue 弹出遮罩层样式实例
Jul 22 Javascript
原生JavaScript实现幻灯片效果
Feb 19 Javascript
如何vue使用el-table遍历循环表头和表体数据
Apr 26 Vue.js
使用jQuery实现掷骰子游戏
Oct 24 #jQuery
jquery实现掷骰子小游戏
Oct 24 #jQuery
JS控制GIF图片的停止与显示
Oct 24 #Javascript
js计时事件实现圆形时钟
Mar 25 #Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
Oct 24 #Javascript
vue项目使用.env文件配置全局环境变量的方法
Oct 24 #Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
Oct 24 #Javascript
You might like
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
TypeScript入门-接口
2017/03/30 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
python 全文检索引擎详解
2017/04/25 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
HTML5学习笔记之html5与传统html区别
2016/01/06 HTML / CSS
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
经济贸易专业自荐信
2014/06/11 职场文书
小学生差生评语
2014/12/29 职场文书
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL
js 数组 fill() 填充方法
2021/11/02 Javascript
关于mysql中string和number的转换问题
2022/06/14 MySQL
Vue Element plus使用方法梳理
2022/12/24 Vue.js