You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Java Processing函数传递参数并调用自定义draw方法?

解决Java Processing中自定义带参数绘制方法的调用问题

问题根源

你用PApplet.main("Circle", ball)的方式完全错误——PApplet.main()的作用是启动继承自PApplet的子类,而你的Circle类并不是PApplet子类,Processing会默认创建一个100x100的空窗口,根本不会执行你想要的带参数绘制逻辑。

正确实现方案

方案1:在主PApplet类内定义自定义绘制方法

将带Ball参数的绘制逻辑写在你的Main类(继承PApplet的主类)里,在系统自动调用的无参draw()中调用它:

import processing.core.PApplet;

public class Main extends PApplet {
    Ball gravityBall;

    public void settings() {
        size(800, 600); // 设置窗口大小
    }

    public void setup() {
        gravityBall = new Ball(width/2, 50, 30); // 初始化小球
    }

    // Processing自动调用的无参draw循环
    public void draw() {
        background(255);
        // 应用重力逻辑
        gravityBall.y += 0.8;
        // 调用自定义带参数的绘制方法
        drawBall(gravityBall);
    }

    // 自定义带Ball参数的绘制方法
    private void drawBall(Ball ball) {
        fill(255, 0, 0);
        ellipse(ball.x, ball.y, ball.size, ball.size);
    }

    public static void main(String[] args) {
        PApplet.main("Main", args); // 正确启动主PApplet类
    }
}

// 自定义Ball类
class Ball {
    float x, y;
    int size;

    Ball(float x, float y, int size) {
        this.x = x;
        this.y = y;
        this.size = size;
    }
}

方案2:在Circle类中封装绘制逻辑(需传入PApplet实例)

如果想把绘制逻辑放在Circle类里,要让它接收PApplet实例作为参数,通过这个实例调用Processing的绘图API:

// 自定义Circle类
class Circle {
    // 静态方法,接收PApplet实例和Ball对象
    public static void drawBall(PApplet p, Ball ball) {
        p.fill(0, 0, 255);
        p.ellipse(ball.x, ball.y, ball.size, ball.size);
    }
}

然后在Main类的draw()中调用:

public void draw() {
    background(255);
    gravityBall.y += 0.8;
    Circle.drawBall(this, gravityBall); // this就是当前PApplet实例
}

关键注意点

  • 只有继承PApplet的类才能通过PApplet.main()启动,它会触发settings()、setup()、draw()等生命周期函数。
  • 自定义带参数的绘制方法无法被Processing自动调用,必须在系统的无参draw()循环内部主动调用。
  • 非PApplet子类不能用PApplet.main()启动,否则会生成默认空窗口,且无法执行你的自定义逻辑。

内容的提问来源于stack exchange,提问作者ilovebender

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:22:27