我正在将一个正在运行的处理代码迁移到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项目的解决方案。
答案 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项目来移植所有内容。