All pastes #2093594 Raw Edit

Anonymous

public text v1 · immutable
#2093594 ·published 2011-11-10 16:38 UTC
rendered paste body
# In the sprite class, the definition of _hover
# self.consume_hover is whether or not the button would like the sprites which are placed below it
# to also get hover events.
    def _hover(self, pos):
        if self.hover_rect is None:
            r = self.rect
        else:
            r = self.hover_rect
        if r.collidepoint(pos):
            return (True, self.consume_hover)
        return (False, False)

# In my Sprite "manager" class
        mouse_pos = pygame.mouse.get_pos()
        if mouse_pos is None:
            return
        mouse_now_over = []
        for sprite in self._sprites:
            hover = sprite._hover(mouse_pos)
            if hover[0] is True:
                mouse_now_over.append(sprite)
                # first, is this one that the mouse was previously over
                if sprite in self._mouse_previously_over:
                    if hover[1] is True:  # It wants to consume the hover
                        break
                    continue
                sprite.on_mouse_over()
                if hover[1] is True:
                    break
        
        for sprite in self._mouse_previously_over:
            if sprite in mouse_now_over:
                continue
            sprite.on_mouse_off()
        self._mouse_previously_over = mouse_now_over