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 相关文章推荐
IE6中使用position导致页面变形的解决方案(js代码)
Jan 09 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
Apr 13 Javascript
jQuery实现HTML5 placeholder效果实例
Dec 09 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
Apr 03 Javascript
ES6中的数组扩展方法
Aug 26 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
Nov 22 Javascript
详解VueJS应用中管理用户权限
Feb 02 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
May 17 Javascript
vue 巧用过渡效果(小结)
Sep 22 Javascript
vue router 源码概览案例分析
Oct 09 Javascript
JavaScript实现烟花绽放动画效果
Aug 04 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
php中如何执行linux命令详解
2018/11/06 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
JS表的模拟方法
2015/02/05 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
js实现日历与定时器
2017/02/22 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
Python3处理文件中每个词的方法
2015/05/22 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
浅谈python常用程序算法
2019/03/22 Python
利用python实现逐步回归
2020/02/24 Python
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
创先争优制度
2014/01/21 职场文书
医院保洁服务方案
2014/06/11 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
项目合作协议书
2014/09/23 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS