处理:当从eclipse中调用setup时,createShape返回null

时间:2015-02-20 18:39:21

标签: java android eclipse processing

我正在将一个正在运行的处理代码迁移到Eclipse项目中,因为我想使用一些不容易从PDE获得的android功能。现在我不断收到这个令人讨厌的错误:

02-20 21:51:01.852: E/AndroidRuntime(19768): FATAL EXCEPTION: Animation Thread
02-20 21:51:01.852: E/AndroidRuntime(19768): Process: com.pbtgames.defuser, PID: 19768
02-20 21:51:01.852: E/AndroidRuntime(19768): java.lang.NullPointerException: Attempt to invoke virtual method 'void processing.core.PShape.setFill(int)' on a null object reference
02-20 21:51:01.852: E/AndroidRuntime(19768):    at com.pbtgames.defuser.Main$Cell.recomputeShape(Main.java:467)
02-20 21:51:01.852: E/AndroidRuntime(19768):    at com.pbtgames.defuser.Main$Cell.changeComplexity(Main.java:460)
02-20 21:51:01.852: E/AndroidRuntime(19768):    at com.pbtgames.defuser.Main$Cell.<init>(Main.java:446)
02-20 21:51:01.852: E/AndroidRuntime(19768):    at com.pbtgames.defuser.Main$Board.initGrid(Main.java:690)
02-20 21:51:01.852: E/AndroidRuntime(19768):    at com.pbtgames.defuser.Main$Board.<init>(Main.java:648)
02-20 21:51:01.852: E/AndroidRuntime(19768):    at com.pbtgames.defuser.Main.setup(Main.java:85)
02-20 21:51:01.852: E/AndroidRuntime(19768):    at processing.core.PApplet.handleDraw(Unknown Source)
02-20 21:51:01.852: E/AndroidRuntime(19768):    at processing.core.PGraphicsAndroid2D.requestDraw(Unknown Source)
02-20 21:51:01.852: E/AndroidRuntime(19768):    at processing.core.PApplet.run(Unknown Source)
02-20 21:51:01.852: E/AndroidRuntime(19768):    at java.lang.Thread.run(Thread.java:818)

堆栈跟踪很简单,在设置中,我正在初始化一个Board类:

board = new Board(boardWidth);

反过来初始化单元格列表。对于每个Cell,我都有PShape属性,名为&#34; form&#34;默认情况下未初始化:

PShape form;

在Cell的构造函数中,我将其初始化为:

form = createShape();
form.setFill(c);
form.beginShape();
form.noStroke();
PVector[] pts = polygon(0, 0, r, complexity, 0);
for (int i = 0; i < pts.length; i++)
    form.vertex(pts[i].x, pts[i].y);
form.endShape(CLOSE);

但是我的代码在到达时崩溃了:

form.setFill(c);

从PDE启动时,这个确切的代码非常有效。任何想法?

提前致谢

更新:

我意识到真正的问题是我使用size方法来定义P2D渲染器,而这在Android模式下是不可用的。相反,我不得不添加这段代码:

public String sketchRenderer() {
    return P2D; 
}

这解决了createShape方法的问题。但是我仍然面临一些关于我在代码中使用其他库的错误。我可以逐个解决它们,但我相信PDE在生成一个android项目时会做所有必要的更改。所以我要坚持修改自动生成的android项目的解决方案。

1 个答案:

答案 0 :(得分:2)

我遇到了这个问题PShape 2.08 throws NullPointerException with createShape并使用了PGraphics而不是PShape。现在它可以工作,但我会在接受这个解决方案之前看看我是否可以将所有形状移植到PGraphics对象。

更新:

我将我的形状移植到PGraphics但渲染性能显着下降!在生成我的apk之前,我想知道PDE做了什么。这个解决方案对我来说基本没用。

解决方案:

我发现临时项目PDE在C:\ Users \ Mohsen \ AppData \ Local \ Temp \ android8159256509115545375sketch中生成 (当PDE编译android代码时,确切位置打印在控制台中) 现在我可以将这个项目导入eclipse并在那里进行修改,而不是通过从头开始构建一个android项目来移植所有内容。