在 Python 模式下使用 Processing PGraphics?
Using Processing PGraphics in Python Mode?
在 Processing 的 Java 模式中,您可以通过全局声明 PGraphics 对象来使用它们,在 setup() 中使用 createGraphics() 设置它们,然后在 draw() 中引用它们。
在Python模式下,做什么不是很清楚,文档似乎也没有解释。您不能在 Python 中声明变量并且变量不是自动全局的,即如果我只是在 setup() c = createGraphics(400,400)
中说然后在 draw() 中说 c.beginDraw()
我得到一个 NameError: global name 'c' is not defined
这不能简单地通过在上面的行中说 global c
来解决。
那是怎么做到的呢?
可以使用 global
修复。确保在初始化 canvas 的地方也使用 global,否则它是一个局部变量,您的全局 canvas 引用可能仍然是 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()
在 Processing 的 Java 模式中,您可以通过全局声明 PGraphics 对象来使用它们,在 setup() 中使用 createGraphics() 设置它们,然后在 draw() 中引用它们。
在Python模式下,做什么不是很清楚,文档似乎也没有解释。您不能在 Python 中声明变量并且变量不是自动全局的,即如果我只是在 setup() c = createGraphics(400,400)
中说然后在 draw() 中说 c.beginDraw()
我得到一个 NameError: global name 'c' is not defined
这不能简单地通过在上面的行中说 global c
来解决。
那是怎么做到的呢?
可以使用 global
修复。确保在初始化 canvas 的地方也使用 global,否则它是一个局部变量,您的全局 canvas 引用可能仍然是 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()