如何更新 pygame 中接受函数(即 lambda)的 Sprite?

How to update a Sprite in pygame which takes in a function i.e. lambda?

假设我有一个按钮精灵 class 喜欢

class Button(pygame.sprite.Sprite): 
     def __init__(self, callback, ...):
         self.callback = callback

现在,回调是一个函数,但是接受一个数组并用它做一些事情。单击按钮后,数组发生更改,但现在我想在新数组上应用相同的按钮?

请注意,该按钮在第一次迭代时有效,但现在我希望使用新数组更新该函数。

如果您将 lambda(或包含数组作为闭包的函数)传递给 callback,那么您需要做的就是用一个新的重新分配 self.callback。我建议用一种方法来做。

    def set_callback(self, callback):
        self.callback = callback

您可以在任何需要更改的地方设置回调,包括在之前的回调函数中。