我似乎无法在JavaScriptMode的draw()方法中一起使用image()和rect()。当我尝试运行代码时,草图什么都不做。它应该打印出绿色圆圈的背景,中间有一个白色矩形。我已经看到这在其他人的草图中完美地完成了,所以我不确定这是什么情况。我这里没有使用createShape()(我知道它在JavaScriptMode中还没有用。
这是我的代码:
PImage image;
void setup() {
size(400,400);
image = loadImage("green-circles-wallpaper-4893-5151-hd-wallpapers.jpg");
}
void draw() {
image(image,0,0,width,height);
rect(100,100,200,200);
}
我想画一个绿色圆圈。
答案 0 :(得分:4)
当涉及到您为变量命名的内容时,JavaScript模式更加挑剔。具体来说,您不能将变量命名为函数。
您的image()
变量正在干扰image
函数,因为它们具有相同的名称。要解决您的问题,只需将myImage
变量重命名为PImage myImage;
void setup() {
size(400,400);
myImage = loadImage("green-circles-wallpaper-4893-5151-hd-wallpapers.jpg");
}
void draw() {
image(myImage,0,0,width,height);
rect(100,100,200,200);
}
,而不是{。}}。
F12
您还应养成检查JavaScript控制台是否存在错误的习惯。在大多数浏览器中,您可以按"Uncaught TypeError: image is not a function"
键调出开发人员工具。在那里,您将找到一个控制台选项卡,您将收到的任何错误都会显示在那里。您的代码会生成错误image()
,这是有道理的,因为您已使用image
变量覆盖了this
函数。
这涵盖在Escape spaces as %20
:
Processing.js需要更多关注变量命名而不是处理
JavaScript的一个强大功能是其动态,无类型的特性。对于像Java这样的类型语言,以及因此处理,可以重用名称而不用担心歧义(例如,方法重载),Processing.js不能。没有进入JavaScript的内部工作,处理开发人员的最佳建议是不使用function / class / etc.处理中的名称作为变量名称。例如,名为line的变量看似合理,但它会导致内置于Processing和Processing.js中的类似命名的line()函数出现问题。对于您创建的内置函数和函数也是如此。一个好的经验法则是:避免在与foo()函数相同的草图中使用变量foo;。