我正在尝试为从bgImages
创建的每个实例分配一个单独的函数,这样当我调用instance.collisiontext
时,它会调用该函数。我觉得我做错了什么。如果您向下查看构建,可以看到我创建实例的位置示例并将函数分配给collidetext
。
collisiontext
方法的重点是调用分配给collidetext
的函数(对于每个实例,它将是一个不同的函数)。
我在这里做错了什么?
此外,在为实例贫民窟分配功能时,我是否需要在'slumnotice'之后保留'()'?
class BgImages(ButtonBehavior, Image):
def __init__(self, **kwargs):
super(Npcs, self).__init__(**kwargs)
self.collidetext=''
def collisiontext(self,**kwargs):
global collidetext
return collidetext()
class MainCharacter(Image):
def __init__(self, **kwargs):
super(MainCharacter, self).__init__(**kwargs)
self._keyboard = Window.request_keyboard(None, self)
if not self._keyboard:
return
self._keyboard.bind(on_key_down=self.on_keyboard_down)
self._keyboard.bind(on_key_up=self.on_keyboard_up)
elif keycode[1] == 'up':
for i in listofwidgets:
if i.collide_point(self.x,self.top):
self.y -=1
i.collisiontext()
class gameApp(App):
def build(self):
slum=BgImages(source='slum.png', collidetext=slumnotice())
listofwidgets=[]
listofwidgets.append(slum)
答案 0 :(得分:1)
我在这里做错了什么?
相当多。如果我只是纠正它并且你弄明白我之后做了什么会更容易:
class BgImages(ButtonBehavior, Image):
def __init__(self, **kwargs):
self.collidetext = kwargs['collidetext']
del kwargs['collidetext']
super(BgImages, self).__init__(**kwargs)
def collisiontext(self):
return self.collidetext()
此外,在为实例贫民窟分配功能时,我是否需要在'slumnotice'之后保留'()'?
这取决于您是想要使用slumnotice
本身还是slumnotice()
的返回值。