jquery+Jscex打造游戏力度条

 更新时间:2020年09月12日 14:22:21   作者:当耐特砖家  
游戏力度条大家一定不陌生,在很多游戏中都能用到,本文介绍了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>

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

相关文章

  • jQuery实现简易QQ聊天框

    jQuery实现简易QQ聊天框

    这篇文章主要为大家详细介绍了jQuery实现简易QQ聊天框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Lazy Load 延迟加载图片的 jQuery 插件

    Lazy Load 延迟加载图片的 jQuery 插件

    本文翻译自 Lazy Load Plugin for jQuery, 介绍一个 jQuery 插件, 它提供懒汉式加载页面图片的功能.
    2010-02-02
  • jquery text(),val(),html()方法区别总结

    jquery text(),val(),html()方法区别总结

    jquery text(),val(),html()方法区别总结。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • jquery获取checkbox的值并post提交

    jquery获取checkbox的值并post提交

    这篇文章主要介绍了jquery获取checkbox的值并post提交,需要的朋友可以参考下
    2015-01-01
  • 从jquery的过滤器.filter()方法想到的

    从jquery的过滤器.filter()方法想到的

    .filter()方法可以接受一个函数作为参数,然后根据函数的返回值判断,这就是jquery选择器的过滤器,下面有个不错的示例,大家可以参考下
    2013-09-09
  • jQuery CSS3相结合实现时钟插件

    jQuery CSS3相结合实现时钟插件

    这篇文章主要介绍了jQuery CSS3相结合实现时钟插件附源码下载的相关资料,需要的朋友可以参考下
    2016-01-01
  • jquery中this的使用说明

    jquery中this的使用说明

    在使用jquery操作js时,经常整不明白this与$(this)。抽空仔细测试了一把,记录下来以供在忘记的时候拉出来参考参考!
    2010-09-09
  • PHP+jquery+ajax实现分页

    PHP+jquery+ajax实现分页

    这篇文章主要为大家详细介绍了PHPjquery+ajax实现分页的代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • jQuery常见面试题之DOM操作详析

    jQuery常见面试题之DOM操作详析

    关于jQuery的DOM操作面试问题其实有很多,下面这篇文章主要给大家介绍了jQuery常见面试题之DOM操作的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • jquery获取当前点击的元素的五种方法介绍

    jquery获取当前点击的元素的五种方法介绍

    我们可以使用$(this)方法获取事件处理函数内部的当前元素,也可以使用e.target方法在外部获取当前元素,此外,我们还介绍了parent()方法和find()方法获取当前元素的父元素或子元素,以及closest()方法获取当前元素最近的祖先元素
    2023-08-08

最新评论