zoukankan      html  css  js  c++  java
  • 玩转Slot Machine

           最近在做一个有关Slot  Machine小游戏的开发,其中遇到了不少的坑,现将个人遇到的问题总结如下,希望今后对大家开发的过程中有所的帮助。

          这个项目是部署到微信朋友圈广告的,两天时间,PV就有14W之多,感觉这个项目还是挺成功的哦!!!

           咱们闲话少说,直接上最终上线的项目效果图。

                                     

                           

                                                   

                                                      

           【意料之外的事情】这个项目竟然获奖了

                        

           这个项目的难点主要在于这个Slot Machine,我在开始开发的时候,也想过直接从github上直接找一个插件来实现,但是后来经过的的尝试,我失败了。在PC端类似的Slot Machine这种插件是非常多的,但是要是直接拿到移动端来用,是有好多的潜在问题的。我们都知道PC端目前对于性能来说,普遍是要比移动端好很多的,但是PC端的插件要是直接拿到移动端来使用的话,就会出现很多的性能问题,尤其是在安卓手机上,会卡的十分严重。那么,我们作为开发人员,只能硬着头皮去解决这些棘手的问题。下面是写的一个Demo。

           

      1 <!DOCTYPE html>
      2 <html>
      3     <head>
      4         <meta charset="utf-8">
      5         <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
      6         <title>slot machine</title>
      7         <style>
      8             * {
      9                 padding: 0;
     10                 margin: 0;
     11             }
     12 
     13             html, body {
     14                 width: 100%;
     15                 height: 100%;
     16                 overflow: hidden;
     17             }
     18 
     19             .slot_machine {
     20                 display: inline-block;
     21                 position: absolute;
     22                 top: 8%;
     23                 left: 22%;
     24                 overflow: hidden;
     25             }
     26 
     27             .slot_machine img {
     28                 display: block;
     29             }
     30 
     31             #img_0 {
     32                 position: absolute;
     33                 top: -300%;
     34             }
     35 
     36             #img_1 {
     37 
     38             }
     39 
     40             #img_2 {
     41                 position: absolute;
     42                 top: -100%;
     43             }
     44 
     45             #img_3 {
     46                 position: absolute;
     47                 top: -200%;
     48             }
     49 
     50             #result_1 {
     51                 position: absolute;
     52                 top: -400%;
     53             }
     54 
     55             .move {
     56                 transform: translateY(100%);
     57             }
     58 
     59             .move_begin {
     60                 -webkit-animation: move_begin 1s ease-in;
     61             }
     62 
     63             @-webkit-keyframes move_begin {
     64                 from {-webkit-transform: translateY(0%);}
     65                 100%  {-webkit-transform: translateY(200%);}
     66             }
     67 
     68             .move_stable {
     69                 -webkit-animation: move_stable .5s linear infinite;
     70             }
     71 
     72             @-webkit-keyframes move_stable {
     73                 from {-webkit-transform: translateY(0%);}
     74                 100%  {-webkit-transform: translateY(300%);}
     75             }
     76 
     77             .move_end_1 {
     78                 -webkit-animation: move_end_1 1s ease-out;
     79             }
     80 
     81             @-webkit-keyframes move_end_1 {
     82                 100%  {-webkit-transform: translateY(300%);}
     83             }
     84 
     85             .move_end_2 {
     86                 -webkit-animation: move_end_2 1s ease-out;
     87             }
     88 
     89             @-webkit-keyframes move_end_2 {
     90                 100%  {-webkit-transform: translateY(100%);}
     91             }
     92 
     93             .move_end_3 {
     94                 -webkit-animation: move_end_3 1s ease-out;
     95             }
     96 
     97             @-webkit-keyframes move_end_3 {
     98                 100%  {-webkit-transform: translateY(200%);}
     99             }
    100 
    101 
    102         </style>
    103     </head>
    104     <body>
    105         <div class="slot_machine">
    106             <img id="img_0" src="./t1.png" alt="" />
    107             <img id="img_1" src="./t1.png" alt="" />
    108             <img id="img_2" src="./t2.png" alt="" />
    109             <img id="img_3" src="./t3.png" alt="" />
    110         </div>
    111         <script src="./jquery-3.0.0.min.js" charset="utf-8"></script>
    112      <script>
    113          var begin = false;
    114          var status = 0;  // 0 stop 1 begin 2 loop 3 end
    115 
    116          $('html').on('click touchstart', function(event) {
    117              event.preventDefault();
    118              console.log(status);
    119 
    120              if (status == 0) {   // stop to begin
    121                  $('.slot_machine img').addClass('move_begin');
    122                  status = 1;
    123 
    124                  $('.slot_machine img').one("webkitAnimationEnd", move_begin_complete);
    125 
    126              } else if(status == 2) {  // loop to end
    127                  $('.slot_machine img').one('animationiteration webkitAnimationIteration', function() {
    128                      console.log('move_stable_animationiteration');
    129                      $('.slot_machine img').unbind("animationiteration webkitAnimationIteration");
    130                      $('.slot_machine img').removeClass('move_stable').addClass('move_end_1');
    131                      $('.slot_machine img').one("webkitAnimationEnd", move_end_complete);
    132                      status == 3;
    133                  });
    134              }
    135          });
    136          function move_begin_complete(){
    137              console.log('move_begin_complete');
    138              $('.slot_machine img').unbind("webkitAnimationEnd");
    139              $('.slot_machine img').removeClass('move_begin').addClass('move_stable');
    140              status = 2;
    141          }
    142          function move_end_complete(){
    143              console.log('move_end_complete');
    144              $('.slot_machine img').unbind("webkitAnimationEnd");
    145              $('.slot_machine img').removeClass('move_end_1');
    146              status = 0;
    147          }
    148      </script>
    149     </body>
    150 </html>

              这个Demo主要用到了CSS3动画,CSS3动画在移动端的性能还是比较好的,至少在安卓机上不会出现一卡一卡的现象。

              测试效果图:

                          

            

          

  • 相关阅读:
    1.1.28 文字所在段落增加下划线
    Microsoft Project 2010基础使用方法
    16.3 将Win7文档的内容到复制Linux的vi中
    3.4 在Word中的公式和序号之间填充连续的点
    18.25 JLink调试程序步骤
    18.24 Ubuntu修改静态IP
    18.23 inline函数功能
    18.22 sprintf函数功能
    18.21 关键字extern
    18.20 频率单位转换
  • 原文地址:https://www.cnblogs.com/chenyablog/p/5765478.html
Copyright © 2011-2022 走看看