javascript - js中的定时动作(每秒帧数)
问题描述
我正在做一个小游戏,我需要做一些动画(比如每秒帧数),到目前为止,我自己设法做到了:
var loadCount = 0;
var ticks = 15;
function loadingLoop() {
loadCount++;
}
switch (loadCount) {
case 1:
$("#img").attr("src", "src/images/cenario/img004.png");
break;
case 2:
$("#img").attr("src", "src/images/cenario/img005.png");
break;
case 3:
$("#img").attr("src", "src/images/cenario/img006.png");
break;
// etc.... //
}
setInterval(function(){
if (loadCount >= 6 && loadCount <= ticks){
loadingLoop();
if (loadCount === ticks) {
clearInterval();
}
console.log(loadCount);
}
}, 500);
所以我想知道是否有更好的方法来做到这一点。
解决方案
因为您的图像编号与 loadCount 的关联非常明确,您可以减少所需的代码行数。不必在 switch 中拼出每个实例,您可以简单地使用以下内容:
$("#img").attr("src", "src/images/cenario/img" + (loadCount+3).toString().padStart(3, '0') + ".png");
padStart
接受一个代表数字的字符串并在开头用一个字符填充它,在这种情况下,我们要求将 0 放在前面。3 表示我们需要 3 位数字。
我在您的计时功能中注意到的另一件事是您没有保存 setInterval,但您尝试清除它。根据您要执行的操作,您可能需要以下内容:
let interval = setInterval(function(){
if (loadCount >= 6 && loadCount <= ticks){
loadingLoop();
if (loadCount === ticks) {
clearInterval(interval);
}
console.log(loadCount);
}
}, 500);
推荐阅读
- java - 如何在 onItemSelected 方法上获取微调器的 id?
- python - Python如何使ping -t脚本无限循环
- javascript - 在 React 中呈现嵌套 json 列表的任何有效方法?
- css - 如何在不复制库的情况下在 Angular 组件的 CSS 中使用第三方 CSS 库?
- random - 有谁知道任何基于分形几何定律的prng?
- parsing - Log Parser Studio 查询 - 最近访问的 IP 地址?
- java - 在“一对多映射”场景中对子实体的 findById 操作返回递归子实体。需要解决方案
- php - PHP:如何将变量值更改为另一个类
- css - 如何扩展绝对放置的伪元素,直到页面内容变得最好?
- d3.js - 使用 D3.js 构建平面日历