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 相关文章推荐
js用图作提交按钮或超连接
Mar 26 Javascript
JS制作简单的三级联动
Mar 18 Javascript
JavaScript获得url查询参数的方法
Jul 02 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
Sep 16 Javascript
JS实现iframe自适应高度的方法示例
Jan 07 Javascript
Vue.js鼠标悬浮更换图片功能
May 17 Javascript
js前端导出Excel的方法
Nov 01 Javascript
javaScript之split与join的区别(详解)
Nov 08 Javascript
微信小程序收藏功能的实现代码
Jun 12 Javascript
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
vue基础知识--axios合并请求和slot
Jun 04 Javascript
JS实现简单移动端鼠标拖拽
Jul 23 Javascript
使用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
PHP 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
php学习 字符串课件
2008/06/15 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
php blowfish加密解密算法
2016/07/02 PHP
JavaScript 调试器简介
2009/02/21 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
Python实现的检测网站挂马程序
2014/11/30 Python
Django在win10下的安装并创建工程
2017/11/20 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
HTML的form表单和django的form表单
2019/07/25 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
运动会稿件200字
2014/02/07 职场文书
省文明单位申报材料
2014/05/08 职场文书
企业承诺书格式
2014/05/21 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
致青春观后感
2015/06/09 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技