Exemplo n.º 1
0
class ButtonSprite(AnimatedSprite):
    def __init__(self, tilemaps, rect, eventstack, onclick=None, onclick_params=[], animations={}, layer=2, fps=60,sendself=False, mouseover='', frontend=None):
        self._layer = layer
        AnimatedSprite.__init__(self, tilemaps, rect, animations, layer, fps)
        self.registered_events = []
        self.eventstack = eventstack
        self.onclick = onclick
        self.onclick_params = onclick_params
        self.sendself = sendself
        self.registered_events.append(self.eventstack.register_event("button1", self, self.click))
        self.mouseover_text = mouseover
        if mouseover:
            self.mo_hash = make_hash()
            self.frontend = frontend
            self.registered_events.append(self.eventstack.register_event("mouseover", self, self.mouseover))

    def click(self, pos):
         if self.onclick is not None:
            if not self.sendself:
                self.onclick(*self.onclick_params)
            else:
                self.onclick(self, *self.onclick_params)

    def mouseover(self, pos):
        self.m = MouseOver(self.mouseover_text, pos, layer=self._layer +1)
        self.frontend.sprites[self.mo_hash] = self.m
        self.eventstack.register_event("mouseout", self, self.mouseout)

    def mouseout(self, pos):
        self.m.delete()
        if self.mo_hash in self.frontend.sprites:
            del self.frontend.sprites[self.mo_hash]

    def delete(self):
        for h in self.registered_events:
            self.eventstack.unregister_event(h)
        if self.mouseover_text and self.mo_hash in self.frontend.sprites:
            del self.frontend.sprites[self.mo_hash]
        self.kill()
Exemplo n.º 2
0
 def mouseover(self, pos):
     self.m = MouseOver(self.mouseover_text, pos, layer=self._layer +1)
     self.frontend.sprites[self.mo_hash] = self.m
     self.eventstack.register_event("mouseout", self, self.mouseout)