我不能在JavaScriptMode的draw()方法中使用image()和rect()

时间:2016-04-09 01:21:11

标签: processing

我似乎无法在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);
}

我想画一个绿色圆圈。

1 个答案:

答案 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;。