[英]Does not using a decorator in pyglet cause problems?
我在 pyglet 中編寫了一個簡單的代碼來在屏幕上繪制一個矩形,但是當我使用正確的代碼格式時,什么也沒有發生,但也沒有拋出任何錯誤
window=pyglet.window.Window()
rect=pyglet.shapes.Shapes(0,0,50,50,color=(255,255,255))
@window.event
def draw_():
rect.draw()
pyglet.app.run()
此代碼只會導致黑屏。 矩形未打印,但如果我使用此代碼代替
window=pyglet.window.Window()
rect=pyglet.shapes.Shapes(0,0,50,50,color=(255,255,255))
def draw_():
rect.draw()
pyglet.app.run()
矩形被打印出來。 由於第二個代碼不是在 pyglet 中繪制形狀的標准方法,我想知道這樣做是否有任何問題(性能問題、故障等)如果第二個代碼錯誤,我應該怎么做?
重繪事件是on_draw()
而不是draw_
:
@window.event
def on_draw():
rect.draw()
如果您不使用裝飾器,則默認事件處理程序將被完全替換:
def on_draw(): rect.draw()
當您使用裝飾時,會添加一個額外的事件處理程序。 因此保留默認處理程序:
@window.event def on_draw(): rect.draw()
[...] 最簡單的方法是將事件處理程序直接附加到 object 上的相應屬性。 這將完全取代默認的事件處理程序。 [...]
[...] 如果您不想替換默認事件處理程序,而是想添加一個額外的事件處理程序,pyglet 提供了使用事件裝飾器的快捷方式。 您的自定義事件處理程序將運行,然后是默認事件處理程序。 [...]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.