javascript - p5.js 脚本因空变量而失败?
问题描述
我非常接近完成一个我已经奋斗了 2 个月的剧本。(p5.js 图形)这是我的问题:
- 我有一个应该根据下拉选择更新的变量。
- 当我给变量一个设定值时,脚本就起作用了。
- 当我将其留空以由下拉选择器侦听功能进行更新时。脚本运行但带有未定义的变量。
- 在某些时候,我失去了更新程序函数设置的值,我似乎无法找出在哪里以及如何。请问有什么指点吗?
这是构建的链接: https ://editor.p5js.org/ekspresyon/sketches/iTnv38kyA
感谢您的时间!
解决方案
有趣的项目,我喜欢粒子/分子模拟。首先是最明显的问题;为什么不将变量设置为初始值?
这似乎是一个逻辑问题。您代码中的路径/流程可能会更好。
当您不设置“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();
推荐阅读
- python - 获取OpenCV中多个小轮廓的外轮廓
- r - 在 R 中读取 xlsx 文件时如何使用错误处理?
- javascript - 在 Node.js 上运行多个物理世界,而不是充分利用服务器
- liferay - 继承的站点角色 - Liferay 7
- reactjs - Eslint:jsx上的“意外令牌/”
- reactjs - 未找到模块(Typescript 和 baseUrl 选项)
- assembly - Mips 汇编程序中执行的指令总数(instr.counter vs instr.stats)
- java - 使用 .stream().collect(Collectors.toMap(...)) 调用时,CharsetDecoder 偶尔会抛出 IllegalStateException
- html - 使用具有动态值的 ng-repeat
- python - 写入文件时如何编码?