【问题标题】:p5.js Beginner - RNG not workingp5.j​​s 初学者 - RNG 不工作
【发布时间】:2018-01-16 17:31:23
【问题描述】:

所以我只想制作一个每 10 秒生成一个随机值的生成器。相反,它会在等待 10 秒后每帧生成一个随机值。请纠正我。

var imgs = [];
var a = 0

function randomizea() {
   a = int(random(5));
}

function setup() {
  createCanvas(1400, 850);

//  for (var i=0; i<5; i++) {
//    imgs[i] = loadImage("data/img"+i+".png");
//  }
}
function draw() {
  background(150, 100, 150);
  setInterval(randomizea, 1000);
//  image(imgs[a], 0, 0);
text(a, 0, 50);
}

【问题讨论】:

  • @usr2564301 在 P5.js 中使用 setInterval() 通常是个坏主意。详情请看我的回答。

标签: random p5.js


【解决方案1】:

您通常不应将setInterval() 与 P5.js 一起使用。相反,请依赖 P5.js 已经为您提供的计时机制。

这是一个简单的例子,它每 10 秒打印一次到控制台:

function draw(){
    if(frameCount % 600 == 0){
        console.log("here");
    }
}

由于每秒触发 60 帧,因此 600 帧是 10 秒。我们使用% 模运算符来检查frameCount 变量是否是600 的倍数,这意味着我们处于10 秒的倍数。

您也可以使用millis() 函数检查是否已经过了一定时间。

相关帖子:

更多信息请咨询the P5.js reference

【讨论】:

  • 是的......已经尝试过了,但我对 random() 函数的理解似乎存在问题,因为即使有你的建议,我也得到了相同的结果:/
  • 你得到了什么确切的结果?
  • 当我在画布上显示 'var a' 作为文本时,它说它等于 0。然后,一秒钟后,它开始快速启动,每帧随机更改其值,直到我停止程序。跨度>
  • 请注意,您在draw() 函数内调用setInterval(),这意味着您每秒钟设置60 个计时器。在两秒钟内,您将拥有 120 个计时器。在 10 秒内,您将拥有 600 个计时器。请尝试我在答案中发布的代码。
  • @Protegit 使用我给你的代码,但打印出一个随机数而不是消息"here"。从那里开始工作。如果您遇到困难,请在新问题帖子中发布minimal reproducible example。祝你好运。
猜你喜欢
  • 2014-11-24
  • 2020-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 2012-11-19
相关资源
最近更新 更多