jquery+Jscex打造游戏力度条


Posted in Javascript onSeptember 12, 2020

本文介绍了jquery+Jscex打造游戏力度条,如果大家玩过桌球类游戏的话,对力度条的概念一定不会陌生,如下图:

jquery+Jscex打造游戏力度条

其实,类似的条条无处不在!比如进游戏时候的进度条、魔兽世界里法师施法过程中读的条等等······

引入jquery ui,我们可以轻松得到下面这个静止的力度条:

html:

<div class="progressbar" style="width: 20%"></div>

js:

$(function () {
  $(".progressbar").progressbar({
  value: 37
  });

加入Jscex让它动起来:

<script type="text/javascript">

 $(function () {

 $(".progressbar").progressbar({

  value: 5

 });

 });

 var executeAsync = eval(Jscex.compile("async", function (proceedValues) {

 while (proceedValues < 100) {

  proceedValues++;

  $await(Jscex.Async.sleep(50));

  $(".progressbar").progressbar({

  value: proceedValues

  });

 }

 }));

 function btnExecuteAsync_onclick() {

 executeAsync(5).start();

 }

</script>
<div class="progressbar" style="width: 20%">
</div>
<input id="btnExecuteAsync" type="button" value="开始" onclick="return btnExecuteAsync_onclick()" />

但是通常情况下,我们需要它往返无限循环下去,那么我们应该这么实现:

var executeAsync = eval(Jscex.compile("async", function (proceedValues) {
 while (true) {

  while (proceedValues < 100) {

  proceedValues++;

  $await(Jscex.Async.sleep(10));

  $(".progressbar").progressbar({

   value: proceedValues

  });

  }

  if (proceedValues == 100) {

  while (proceedValues > 0) {

   proceedValues--;

   $await(Jscex.Async.sleep(10));

   $(".progressbar").progressbar({

   value: proceedValues

   });

  }

  }

 }

 }));

就在这个时候,我一不小心,把if (proceedValues == 100) { } 注释掉了,代码变成这个样子:

var executeAsync2 = eval(Jscex.compile("async", function (proceedValues) { 
 while (true) { 
  while (proceedValues < 100) { 
  proceedValues++; 
  $await(Jscex.Async.sleep(10)); 
  $(".progressbar3").progressbar({ 
   value: proceedValues 
  }); 
  } 
  //if (proceedValues == 100) { 
  while (proceedValues > 0) { 
  proceedValues--; 
  $await(Jscex.Async.sleep(10)); 
  $(".progressbar3").progressbar({ 
   value: proceedValues 
  }); 
  } 
  //} 
 } 
 }));

 效果上面一模一样,不会错!

可以看得出来,内部的两个while不是同时执行的,而是非常线性的,它们之间会相互等待,而且最开始的执行顺序是从上至下,内部的while执行完了,再跳到最外层的while重新执行。

这种设计方式,无疑是优雅的!!

上面那种三个while的方式语意性很好,从刚刚分析得出,代码还可以这样写:

var executeAsync = eval(Jscex.compile("async", function (proceedValues) {

 while (proceedValues < 100) {

  proceedValues++;

  $await(Jscex.Async.sleep(10));

  $(".progressbar").progressbar({

  value: proceedValues

  });

  if (proceedValues == 100) {

  while (proceedValues > 0) {

   proceedValues--;

   $await(Jscex.Async.sleep(10));

   $(".progressbar").progressbar({

   value: proceedValues

   });

  }

  }

 }
}));

这样相当于永远跳不出最外层的proceedValues < 100,所以也会无限循环下去。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title></title>
 
 
 
</head>
<body>
 
 <script src="http://files.cnblogs.com/iamzhanglei/jscex.min.js" type="text/javascript"></script>
 <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" />
 
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
 <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
<script>
 $(function () {
 $("#progressbar3").progressbar({
  value: 37
 });

 });
 </script>

 

<div class="demo">

<div id="progressbar3" style="width:200px"></div>

</div><!-- End demo -->

<script>
 var executeAsync21 = eval(Jscex.compile("async", function (proceedValues) {

 while (true) {
 
  while (proceedValues < 100) {

  proceedValues++;

  $await(Jscex.Async.sleep(100));
  $("#progressbar3").progressbar({
   value: proceedValues
  });

  }

  //if (proceedValues == 100) {

  while (proceedValues > 0) {

  proceedValues--;

  $await(Jscex.Async.sleep(100));
  $("#progressbar3").progressbar({
   value: proceedValues
  });

  }

  //}

 }
 }));
 executeAsync21(38).start();
 
</script>

</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Extjs学习笔记之八 继承和事件基础
Jan 08 Javascript
js 处理URL实用技巧
Nov 23 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
Oct 11 Javascript
JavaScript使用cookie实现记住账号密码功能
Apr 27 Javascript
详解Bootstrap按钮
Jan 04 Javascript
jquery.validate 自定义验证方法及validate相关参数
Jan 18 Javascript
详解javascript new的运行机制
Jan 26 Javascript
微信小程序 登录的简单实现
Apr 19 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
微信小程序时间选择插件使用详解
Dec 28 Javascript
Node.js API详解之 dns模块用法实例分析
May 15 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
Oct 21 #Javascript
node.js学习之base64编码解码
Oct 21 #Javascript
JavaScript浮点数及运算精度调整详解
Oct 21 #Javascript
利用Node.JS实现邮件发送功能
Oct 21 #Javascript
bootstrap中使用google prettify让代码高亮的方法
Oct 21 #Javascript
BootStrap网页中代码显示用法详解
Oct 21 #Javascript
网页瀑布流布局jQuery实现代码
Oct 21 #Javascript
You might like
PHP 常见郁闷问题答解
2006/11/25 PHP
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
2017/05/07 Javascript
SVG动画vivus.js库使用小结(实例代码)
2017/09/14 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
python中的函数用法入门教程
2014/09/02 Python
跟老齐学Python之总结参数的传递
2014/10/10 Python
python tkinter界面居中显示的方法
2018/10/11 Python
ipython和python区别详解
2019/06/26 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
医院总经理职责
2013/12/26 职场文书
打架检讨书100字
2014/01/19 职场文书
保护环境倡议书500字
2014/05/19 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
公司租房协议书
2014/10/14 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
运动员代表致辞
2015/07/29 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
MySQL 数据丢失排查案例
2021/05/08 MySQL