我正在学习编码并且是新手。我目前正在尝试将Processing(java)草图转换为p5(javascript)草图以放在我的第一个网站上。
我在处理草图中翻译Vector
和Array
语法时遇到了问题。
这是处理Sketch(工作)的Vector
:
for (int i = pts.size()-1; i >= 0; i --){
PVector pt = (PVector)pts.get(i);
......
PVector pt2 = (PVector)pts.get(j);
if (pt.dist(pt2) < 20){
......
以下是我尝试在p5中翻译它的方法(不工作)
for (var i = pts.size()-1; i >= 0; i --){
pt = p5.Vector.pts.get(i);
...........
var pt2 = (PVector)pts.get(j);
if (pt.dist(pt2) < 20){
line(pt.x, pt.y, pt2.x, pt2.y);
}
}
答案 0 :(得分:0)
您不应该尝试通过逐行和翻译语法来翻译代码。相反,您需要退后一步,先将程序转换为英语。然后你拿英语并尝试用目标语言实现它。这可能听起来很愚蠢,但英语被称为算法。
所以,你应该对你的程序有这样的描述:
“显示10个圆圈在屏幕上反弹。如果圆圈触及屏幕边缘,它应该会被......反弹”
这只是一个例子,但你明白了。然后你会接受并在P5.js中实现它。
因此,不应该说“我如何将此数组语法转换为P5.js”,而应该问自己“数组如何在JavaScript中工作”甚至“变量如何在JavaScript中工作”。从那里你可以阅读tutorials来弄清楚如何在P5.js中实现你的算法。
然后,如果您遇到特定的语法错误,请查看the JavaScript console,了解您遇到的任何错误。如果你告诉我们的是它不起作用,我们就无法提供帮助。你遇到了什么错误?您的MCVE在哪里?
所有这些都说,我会尽力帮助解决您的具体问题。我们来看原来的一行:
PVector pt = (PVector)pts.get(i);
这一行声明一个名为pt
的变量,并将其指向从pts.get(i)
返回的任何内容,并将其转换为PVector
,因为Java是静态输入,所以一切都需要一种类型。
将其与您在P5.js中尝试做的事情进行比较:
pt = p5.Vector.pts.get(i);
首先,您在哪里宣布pt
变量?其次什么是p5.Vector.pts
?这种语法没有任何意义。您需要了解变量和数组在JavaScript中的工作方式。
同样,让我们看一下P5.js代码中的这一行:
var pt2 = (PVector)pts.get(j);
同样,pts
在哪里宣布?而且你永远不必在JavaScript中投射任何东西,因为它是动态类型的。同样,您需要回过头来了解JavaScript中变量的工作原理。
无耻的自我推销:我已经编写了一系列面向处理开发人员尝试学习JavaScript的教程,可用here。