为什么我在 Processing.py 中收到 strokeWeight() 的 NullPointerException?

Why am I getting a NullPointerException for strokeWeight() in Processing.py?

快速免责声明:我有点新手,所以这个问题可能只是我没有看到明显的,但基本上当我 运行

def setup():
    size(400,400)

def test():
    strokeWeight(5)
    circle(100, 100, 100)

test()

在处理过程中出现以下错误:

processing.app.SketchException: java.lang.NullPointerException
at processing.core.PApplet.strokeWeight(PApplet.java:14431)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:188)
    at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:206)
    at org.python.core.PyObject.__call__(PyObject.java:497)
    at org.python.core.PyObject.__call__(PyObject.java:501)
    at org.python.core.PyMethod.__call__(PyMethod.java:141)
    at org.python.pycode._pyx58.test(sketch_210426a.pyde:6)
    at org.python.pycode._pyx58.call_function(sketch_210426a.pyde)
    at org.python.core.PyTableCode.call(PyTableCode.java:171)
    at org.python.core.PyBaseCode.call(PyBaseCode.java:139)
    at org.python.core.PyFunction.__call__(PyFunction.java:413)
    at org.python.pycode._pyx58.f[=12=](sketch_210426a.pyde:1)
    at org.python.pycode._pyx58.call_function(sketch_210426a.pyde)
    at org.python.core.PyTableCode.call(PyTableCode.java:171)
    at org.python.core.PyCode.call(PyCode.java:18)
    at org.python.core.Py.runCode(Py.java:1614)
    at org.python.core.Py.exec(Py.java:1658)
    at org.python.pycode._pyx57.f[=12=](/var/folders/vf/3zy00t252_372n6n1n060tc00000gn/T/sketch_210426a6112183873956099370/sketch_210426a.pyde:96)
    at org.python.pycode._pyx57.call_function(/var/folders/vf/3zy00t252_372n6n1n060tc00000gn/T/sketch_210426a6112183873956099370/sketch_210426a.pyde)
    at org.python.core.PyTableCode.call(PyTableCode.java:171)
    at org.python.core.PyCode.call(PyCode.java:18)
    at org.python.core.Py.runCode(Py.java:1614)
    at org.python.core.Py.exec(Py.java:1658)
    at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:276)
    at jycessing.PAppletJythonDriver.processSketch(Unknown Source)
    at jycessing.PAppletJythonDriver.findSketchMethods(Unknown Source)
    at jycessing.Runner.runSketchBlocking(Unknown Source)
    at jycessing.mode.run.SketchRunner.lambda$startSketch(Unknown Source)
    at java.lang.Thread.run(Thread.java:748)

    at jycessing.mode.run.SketchRunner.convertPythonSketchError(Unknown Source)
    at jycessing.mode.run.SketchRunner.lambda$startSketch(Unknown Source)
    at java.lang.Thread.run(Thread.java:748)

有趣的是,当 Processing 的任何一个内置函数(例如 setup()draw()mouseClicked)也被定义时,我只会返回错误,所以如果我运行:

def why_arent_you_working():
    print("please")
    
def test():
    strokeWeight(5)
    circle(100, 100, 100)
    
test()
why_arent_you_working()

出于某种原因它会起作用。

我已经尝试了 10 个关于 NullPointerException 的不同线程,但我似乎无法找到我做错了什么。正如我在前面写的 post,我是一个新手,所以这可能是我的一些愚蠢的疏忽,但如果有人帮助我,那就太好了。

当你声明一个变量时,你所做的就是创建指向该变量的东西。即当我们创建变量 x = 5 时。x 只是指向数字 5.

的引用

NullPointerException 当您指向 Null 时出现。我对 strokeWeight 方法不太熟悉,所以我不能准确地告诉你,但如果你为我添加更多代码,我可以尝试提供更多帮助。

在日志文件(您编写的第二部分)中,您可以单击行号,它会将您带到错误来自方法的哪一部分。

所以下面它告诉我们 NullPointerException 来自第 14431 行中一个叫做 processing.core.PApplet.strokeWeight 的地方。如果你可以点击这个数字并将方法复制到你原来的 post 我可以尝试从那里获得更多帮助。

processing.app.SketchException: java.lang.NullPointerException at processing.core.PApplet.strokeWeight(PApplet.java:14431)

这可能是“混合活动模式和静态模式”的结果。主动模式是当你使用 setup() and/or draw() 时,静态模式是当你不使用时。基本上,如果您使用 setup(),则不能在缩进(或变量定义)之外调用任何函数。在屏幕上画圆的标准方式是这样的:

def setup():
    size(400,400)

def draw():
    strokeWeight(5)
    circle(100, 100, 100)

draw() 的调用方式与 setup() 相同:它会自动调用,无需您在任何地方显式调用它。

请记住 draw() 是一个循环,因此它会 运行 连续直到 noLoop() 被调用。