首页 > 解决方案 > p5.j​​s 脚本因空变量而失败?

问题描述

我非常接近完成一个我已经奋斗了 2 个月的剧本。(p5.js 图形)这是我的问题:

这是构建的链接: https ://editor.p5js.org/ekspresyon/sketches/iTnv38kyA

感谢您的时间!

标签: javascriptclassglobal-variablesundefinedp5.js

解决方案


有趣的项目,我喜欢粒子/分子模拟。首先是最明显的问题;为什么不将变量设置为初始值?

这似乎是一个逻辑问题。您代码中的路径/流程可能会更好。

当您不设置“f”变量时,它是“未定义”。在设置中,您添加水和空气分子。但是在分子类的构造函数中是这样的:

this.f = f;
this.speed_x = random(-f,f);
this.speed_y = random(-f,f);

random(-undefined, undefined) 会是什么?那个号码不存在。

使用当前代码,您只能在设置全局“f”变量时添加分子,这似乎是一种不好的做法。您可以在设置“f”变量后添加分子、使用初始值或在更改“f”变量后更新分子中的这些值。

此外,对“f”变量的更改永远不会传递给现有分子,您只需更改全局“f”变量。


另一件事; 没有必要检查每一帧的速度。仅当 Dropbox 中的值发生更改时。不要在 draw 函数中调用 speed ,而是将其添加到 setup 函数中:

var temp = document.getElementById("molshake");
temp.addEventListener('change', speed);

这会为事件“onchange”添加一个侦听器,当 Dropbox 发生更改时,它会调用 speed();


推荐阅读