html5中文学习网

您的位置: 首页 > 网站及特效实例 > javascript特效 » 正文

使用vue编写一个点击数字计时小游戏_javascript技巧_

[ ] 已经帮助:人解决问题

使用vue编写一个点击数字计时小游戏,列入你在文本框中输入3,点击开始会生成一个3行3列的表格,表格数据为1-9随机排列,这时候从1开始点击,按顺序点到9,当按正确顺序点击完毕,会提示所用的时间,如果顺序没有按对,会提示游戏结束. nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

1.首先下载vue源码,下载地址http://cn.vuejs.org nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

2.jquery是在面向dom操作,而vue是面向数据操作的,所以使用vue最好不要去操作dom,尽量发挥出vue的独到之处,(如果使用过angularjs可能更容易理解) nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

3.建立一个普通的html文件,在头部引用vue的源文件nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

<head>   <meta charset="utf-8" />   <title></title>   <script type="text/javascript" src="js/vue.js"></script></head> 

4.简单的页面 nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

1)首先v-model,数据的双向绑定,根据你文本框输入的值变化而变化. nFPHTML5中文学习网 - HTML5先行者学习网

2)@click绑定一个click事件,其中@是v-on的缩写.当然绑定事件可以带参数例如@click='time(item)'. nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

3)v-for="(index, item) in list",循环数组,index为数组的角标,item为数组中的值. nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

可以看一下vue文档进一步了解. nFPHTML5中文学习网 - HTML5先行者学习网

<body>  <div id="play">   <span>输入数字,点击开始,会生成对应输入数字的表格,从表格中数字1开始点击,按顺序点击到最后....</span><br />   <input type="number" v-model="num" />   <button @click='arr'>开始</button>   <br />   <div v-for="(index, item) in list">    <template v-if="index % num == 0 && index!=0"><br><br><br></template>    <div style="float: left;"><button class="ibutton" @click='time(item)'>{{item}}</button></div>   </div>  </div></body>

5.vue操作 nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

1)首先要new出一个Vue的实例,el绑定你的dom,这里用id作为标识 nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

2)data这是vue要操作的数据,num文本框的值(默认为2),list[]根据文本框值,生成的list,startTime点击表格的开始时间,endTime点击表格的结束时间,checkNum当前选中的数字. nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

3)methods中有两个方法arr用来根据文本框的值,生成一个数组,生成一个文本框值的平方长度,且不会重复的数组,数组的值为1-文本框值的平方,加入文本框的值为3,则生成的数组长度为9,数组的内容为1-9且不重复. nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

time计算点击的开始时间和结束时间,用check]Num来控制点击的顺序.nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

<script>  new Vue({   el: '#play',   data: {    num: 2,    list: [],    startTime: 0,    endTime:0,    checkNum:0   },   methods: {    arr: function() {     if(this.num > 20){      alert('数值过大,浏览器会死掉,最好不要大于20');      return;     }     this.checkNum = 0;     var arrlength = this.num * this.num;     var arr = new Array(arrlength);     var index = 0;     for(var i = 1; i <= arrlength; i++) {      //生成随机数      var num = Math.random(); //Math.random():得到一个0到1之间的随机数      num = Math.ceil(num * arrlength); //num*?的取值范围在0~?之间,使用向上取整就可以得到一个1~?的随机      if(arr[0] != 0) {       var flag = false; // 控制是否存在重复元素       // 遍历生产数组中的元素       for(var j = 0; j < arr.length; j++) {        if(num != arr[j]) {         flag = true;        } else {         flag = false;         break;        }       }       if(flag == true) {        arr[index++] = num;       } else {        // 发现有重复元素重新产生新的随机数        i--;       }      } else {       arr[index++] = num;      }          }     this.list = arr;    },    time: function(item){     if(this.checkNum+1 != item){      alert('game over');      this.checkNum = 0;      return;      }     var date = new Date();     if(item == 1){      this.startTime = date.getTime();     }     if(item == this.num * this.num){      this.endTime = date.getTime();      var useTime = ((this.endTime - this.startTime)/1000).toFixed(2);      alert('使用了'+useTime+'秒');      this.checkNum = 0;      return;     }     this.checkNum = item;    }   }  })</script>

6.css代码 nFPHTML5中文学习网 - HTML5先行者学习网

<style>  .ibutton{   margin-top: 10px;   margin-left: 10px;   color: #fff;   border: 1px solid #8a6de9;   background-color: #8a6de9;   font-size: 14px;   padding: 6px 12px;   border-radius: 7px;   width: 50px;   height: 40px;  }</style>

7.在某些特定的场景使用vue来完成一个功能要比jquery简单的多,但是jquery还是很强大的,根据不同的场景运用不同的技术,更快更好的完成自己想要的功能.nFPHTML5中文学习网 - HTML5先行者学习网
nFPHTML5中文学习网 - HTML5先行者学习网

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。nFPHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助