[英]Processing: Can you draw outside of the Processing Class?
我正在尝试将代码组织到可以在主处理 class 之外绘制的位置,但是,每当我尝试这样做时,都会得到NullPointerExeption
。
public class Processing extends PApplet {
PApplet p = new PApplet();
Screen homeScreen = new Screen(new Vector2(0, 0), p);
public static void main(String[] args) {
PApplet.runSketch(new String[]{"Processing"},
new Processing());
}
public void settings() {
// Setup
size(500, 500);
TextBox t = new TextBox(new Vector2(0, 0), new Vector2(300, 300), new PApplet());
homeScreen.addContent(t);
}
}
我在如下所示的TextBox
Class 中调用display()
方法。
public void display() {
// Text Box Body
p.pushMatrix();
p.fill(240);
p.rect(pos.getPos()[0], pos.getPos()[1], dimensions.getPos()[0], dimensions.getPos()[1]);
}
p
是通过构造函数传递的PApplet
Object。 Exeption 如下所示。
java.lang.NullPointerException
at processing.core.PApplet.pushMatrix(PApplet.java:13149)
at TextBox.display(Processing.java:154)
at Screen.display(Processing.java:83)
at Processing.draw(Processing.java:29)
at processing.core.PApplet.handleDraw(PApplet.java:2426)
at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1557)
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:316)
Process finished with exit code 0
如果我注释掉pushMatrix()
会发生同样的错误,只是指向fill()
function。
谢谢您的帮助!
注意:您正在创建PApplet
的多个实例,这会使您的代码混乱,并且您会遇到错误。 Processing
class 已经扩展PApplet
,所以删除这一行PApplet p = new PApplet();
并将其替换为Processing p = this;
或代替new Screen(new Vector2(0, 0), p);
您可以像这样使用this
关键字: new Screen(new Vector2(0, 0), this);
- 谢谢@sorifiend
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.