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 相关文章推荐
JQuery 选项卡效果(JS与HTML的分离)
Apr 01 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
May 24 Javascript
seajs1.3.0源码解析之module依赖有序加载
Nov 07 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
Dec 25 Javascript
ie中js创建checkbox默认选中问题探讨
Oct 21 Javascript
jquery实现textarea 高度自适应
Mar 11 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
Jun 20 Javascript
微信小程序 rich-text的使用方法
Aug 04 Javascript
Angularjs自定义指令实现分页插件(DEMO)
Sep 16 Javascript
js实现碰撞检测
Jan 29 Javascript
vue基于Teleport实现Modal组件
May 31 Vue.js
用JS实现飞机大战小游戏
Jun 09 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中对数据库操作的封装
2006/10/09 PHP
PHP面向对象的使用教程 简单数据库连接
2006/11/25 PHP
php 异常处理实现代码
2009/03/10 PHP
小谈php正则提取图片地址
2014/03/27 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
Linux中Python 环境软件包安装步骤
2016/03/31 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
幼儿园教学随笔感言
2014/02/23 职场文书
丧事答谢词大全
2015/09/30 职场文书
2016中秋节广告语
2016/01/28 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
Python 实现Mac 屏幕截图详解
2021/10/05 Python