1

由于未知原因,一个相对简单的处理脚本在 2.0 IDE 的 Javascript 模式和浏览器(通过 Processing.JS)中都失败了。我很确定同样的问题是停止这两种方法。我已经隔离了一条导致失败的线路,并在以下页面中进行了说明:

  • Test1.html是可以工作的项目脚本的精简版
  • Test2.html演示了在调用单个额外命令时 Test1 如何失败(第 93 行),尽管它在 IDE 的 Java 模式下运行良好。违规行仅试图重新打印已经成功打印的信息void setup(){},因此我感到困惑。

所有脚本都可以在此处查看,但Test2.pde中的关键行位于void drawLinks().

知道是什么原因造成的吗?我现在在这上面浪费了这么多时间!只需将Test2.pde 脚本复制/粘贴到新的 Processing 2.0 IDE 中,即可在 Java 和 Javascript 模式下使用它。

4

3 回答 3

2

如果您在处理 IDE 中创建了代码,则不能直接在 Web 浏览器中使用,要在 Web 浏览器中运行脚本,您主要有两种选择:

A) 您可以从 Processing 中导出 java-applet。然后可以将其嵌入到您的网页中。这会将文件视为 java-applet,因此即使它可以工作,也可能不是优雅的解决方案。

B) ProcessingJS 正在读取处理文件并将它们作为本机 javascript 在 Web 浏览器中运行。您下载 JS 库并创建一个文件来导入它并指向处理源文件,然后在本机 javascript 中对其进行解析和绘制。

于 2012-12-09T21:16:21.570 回答
1

我发现,当使用带有 processing.js 的 OOP 时,您必须在所有实例变量前面加上 athis.才能使其正常工作,尤其是当此类对象在 anarray或 an中实例化时ArrayList。您将需要对所有构造函数和方法进行此修改。

例如:

class Route {
  ArrayList<Integer> cities;
  float distance;

  Route(ArrayList CITIES, float DISTANCE) {
    this.cities = CITIES;
    this.distance = DISTANCE;
  }
}

对于一个实时示例,请查看我的交互式简历源中链接的 .pde

修改后的代码仍会在 Processing : Java / Standard Mode 中执行,但会变得过于冗长。我通常只在我将项目移植到 processing.js 或想要一个在标准/Java 和 JavaScript (processing.js) 模式下工作的项目时才进行此更改。

于 2012-12-11T07:27:58.970 回答
1

ProcessingJS 的 ArrayList 版本似乎有问题。虽然它被正确指定,但在其中接受 initialCapacity 的构造函数似乎存在一个错误。最近的一份错误报告也显示了这一点

tl;dr:从第 65 行创建的 arrayList 中删除变量 n,

this.links = new ArrayList<Link>(n);

应该变成:

this.links = new ArrayList<Link>();
于 2012-12-19T01:10:11.010 回答