相对简单的处理脚本在2.0 IDE的Javascript模式和浏览器(通过Processing.JS)中都失败,原因不明。我很确定同样的问题是停止这两种方法。我已经隔离了导致失败的一行,并在以下页面中进行了说明:
void setup(){}
中成功打印的信息,因此我感到困惑。所有脚本均可查看here,但Test2.pde中的关键行位于void drawLinks()
。
知道造成这种情况的原因是什么?我现在浪费了这么多时间!可以将Test2.pde script复制/粘贴到新的Processing 2.0 IDE中,以便在Java和Javascript模式下使用它。
答案 0 :(得分:2)
如果您在Processing IDE中创建了代码,则无法直接在Web浏览器中使用,要在Web浏览器中运行脚本,您主要有两个选项:
A)您可以从Processing导出java-applet。然后可以将其嵌入到您的网页中。这将文件视为java-applet,因此即使它工作,它也许不是优雅的解决方案。
B)ProcessingJS正在读取处理文件并在Web浏览器中将其作为本机javascript运行。您下载JS库并生成一个文件以导入它并指向处理源文件,然后在本机javascript中对其进行解析和绘制。
答案 1 :(得分:1)
我发现在使用OOP和processing.js时,必须在this.
之前添加所有实例变量才能使其正常工作,尤其是在array
或ArrayList
中实例化这些对象时class Route {
ArrayList<Integer> cities;
float distance;
Route(ArrayList CITIES, float DISTANCE) {
this.cities = CITIES;
this.distance = DISTANCE;
}
}
。您需要对所有构造函数和方法进行此修改。
例如:
{{1}}
有关实际示例,请查看我.pde linked来源中的interactive resume。
修改后的代码仍将在Processing:Java / Standard Mode中执行,但过于冗长。如果我将项目移植到processing.js或者希望项目在标准/ Java和JavaScript(processing.js)模式下工作,我通常只会进行此更改。
答案 2 :(得分:1)
这似乎是ProcessingJS的ArrayList版本的问题。虽然它是specified properly,但构造函数中似乎存在一个错误,它接受了initialCapacity。最新的错误报告also shows this。
tl; dr:从第65行的arrayList创建中删除变量n,
this.links = new ArrayList<Link>(n);
应该成为:
this.links = new ArrayList<Link>();