【问题标题】:JavaScript Counter Variable Fluctuate Between Two ValuesJavaScript 计数器变量在两个值之间波动
【发布时间】:2021-12-17 12:38:09
【问题描述】:

我试图在 0 和 2 的两个范围之间连续波动变量“z”0.1。当它达到最大值 2 时,我希望变量“z”递减。当它达到 0 的最小值时,我希望变量“z”增加。到目前为止,我的代码所做的只是返回数字 1。

注意:我也在 github.com/mattdesl 的 canvas-sketch 上使用此功能

let z = 1;
let count = 0.1;

setInterval(function(){
  if(z == 2) count *= -1;
  if(z == 0) count *= +1;
  return z += count;
}, 1000);

console.log(z);

【问题讨论】:

  • 它正在计数,但您只打印一次该值。尝试将console.log(z) 放在setInterval 内(确保将其放在return 之前。

标签: javascript animation setinterval increment generative-programming


【解决方案1】:

试试这个:

let z = 1;
let increment = 0.1

setInterval(function(){
  if(z === 2) increment = -0.1;
  if(z === 0) increment = 0.1;
  z = Math.round((z + increment) * 10) / 10;

  console.log(z);
}, 1000);

z 线在这里非常关键。试试 z += increment ,你会得到 JS 舍入错误。所以我们只需要确保在添加后将数字清除到小数点后一位即可。

【讨论】:

  • 哇!非常感谢,不知道存在 JS 舍入错误 [JS btw 的新手]——你所做的小数操作很有创意,我会记住这一点以备不时之需!
  • 别担心,另一种选择是这样的:Number((z + increment).toFixed(1))。 toFixed 将其转换为字符串,因此您只需将其转换回数字即可。
猜你喜欢
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多