js 摇骰子特效

1,699 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天

前言

最近正好有在搜有关摇骰子的游戏,在网上看到了一篇比较不错的案例,修改了原来的代码给大家分享一下

正文

这个摇骰子的动作主要是通过定时器改变骰子的图片实现的,比较简单,主要依靠setTimeout()这个函数实现得到的。下面看看代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>摇骰子</title>
        <style type="text/css">
            .dice{
                width: 100px;
                height: 100px;
                background-image: url(1.jpg);
                cursor: pointer;
                position: relative;

            }       
        </style>
    </head>
    <body>
        <div class="dice">

        </div>
    </body>
    <script src="jquery-3.3.1.js"></script>
    <script type="text/javascript">
       $(function(){
           let dice = $(".dice");
           dice.on('click',function(){
               dice.css('cursor','default');
               let num = Math.ceil(Math.random()*6);
               console.log(num);
               
               setTimeout(function(){
                   dice.css('background-image','url(d1.jpg)');
               },200);
               setTimeout(function(){
                   dice.css('background-image','url(d2.jpg)');
               },400);
               setTimeout(function(){
                   dice.css('background-image','url(d3.jpg)')
               },600);
              setTimeout(function(){
                  dice.css('background-image','url('+num+'.jpg')
              },700);
           });
       });
    </script>
</html>

dice.css('cursor','default');

这个表示jq中设置css属性,这里是设置鼠标指针放在一个元素边界范围内时所用的光标形状。

dice.css('background-image','url(d3.jpg)')

这个是配置样式下的背景图片, 最后一个使用随机数是为了随机展示一面数字。

然后是用到的图片

前面的是六个面,后面是演示动作的图,看起来就像是动的。

点击后通过定时器按顺序显示,最后通过随机数显示骰子的面。

这里和原来参考的代码不同的有两个地方一是定时器的时间(原来的代码中所有定时器时间都是200),二是最后显示的面原来的代码没有加定时器。

原来的我直接用有些问题,动作图由于定时器时间相同,你只能看到最后一张。

然后我查了setTimeout的用法。

setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

如果多个setTimeout执行,又是需要顺序显示图片,那时间需要设置不同,这样可以是图片在不同时间显示不一样的图片。尽管代码还是会按顺序执行。但是由于多张图几乎同时显示,肉眼是只能看到一张的。只有时间不同才能看到多张图,产生骰子转动的错觉。