首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Processing:可以在Processing类之外绘制吗?

Processing:可以在Processing类之外绘制吗?
EN

Stack Overflow用户
提问于 2021-05-10 11:31:56
回答 1查看 47关注 0票数 0

我试图将代码组织到我可以在主处理类之外绘制的地方,然而,每当我尝试这样做时,我都会得到一个NullPointerExeption

代码语言:javascript
复制
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类中的display()方法,如下所示。

代码语言:javascript
复制
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对象。Exeption如下所示。

代码语言:javascript
复制
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()函数。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2021-05-10 11:57:48

注意:您正在创建多个PApplet实例,这将使您的代码变得混乱,并且您将遇到错误。Processing类已经扩展了PApplet,所以删除这一行PApplet p = new PApplet();并用Processing p = this;替换它,或者您可以使用this关键字来代替new Screen(new Vector2(0, 0), p);,如下所示:new Screen(new Vector2(0, 0), this); -感谢@sorifiend

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67464467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档