0

在 Processing 的 Java 模式中,您可以通过全局声明 PGraphics 对象,在 setup() 中使用 createGraphics() 设置它们,然后在 draw() 中引用它们来使用 PGraphics 对象。

在 Python 模式下,做什么不是很清楚,文档似乎也没有解释。你不能在 Python 中声明变量并且变量不是自动全局的,即如果我只是在 setup()c = createGraphics(400,400)中说然后在 draw() 中说c.beginDraw()我得到 a NameError: global name 'c' is not defined,这不能简单地通过global c在上面的行中说来解决。

那么它是如何完成的呢?

4

1 回答 1

0

可以使用global. 一定要在你初始化画布的地方使用全局,否则它是一个局部变量,你的全局画布引用可能仍然是None

这是一个基本示例:

# global reference
canvas = None

def setup():
    size(300, 300)
    # setup global canvas
    global canvas
    canvas = createGraphics(300, 300)

    canvas.beginDraw()
    canvas.background(0);
    canvas.noStroke()
    canvas.blendMode(DIFFERENCE)
    canvas.ellipse(150,150,150,150)
    canvas.endDraw()

def draw():
    # reference global canvas to draw
    global canvas
    image(canvas,0,0)

def mouseDragged():
    diameter = dist(mouseX,mouseY,pmouseX,pmouseY)
    # reference global canvas to update graphics
    global canvas
    canvas.beginDraw()
    canvas.ellipse(mouseX,mouseY,diameter,diameter)
    canvas.endDraw()

PythonMode 中的 PGraphics

于 2020-04-12T21:56:08.410 回答