From: pin Date: Fri, 1 Mar 2013 12:29:37 +0000 (+0000) Subject: Implémentation plus propre avec une sous-classe de Sprite. X-Git-Url: https://scm.cri.mines-paristech.fr/git/minwii.git/commitdiff_plain/fa5bf40bfe796d33480a09d9e6400502552d66f7?ds=inline Implémentation plus propre avec une sous-classe de Sprite. git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@417 fe552daf-6dbe-4428-90eb-1537e0879342 --- diff --git a/src/kinect/pygamedisplay.py b/src/kinect/pygamedisplay.py index 82621ea..fbf0b77 100755 --- a/src/kinect/pygamedisplay.py +++ b/src/kinect/pygamedisplay.py @@ -38,6 +38,24 @@ class RGB : return self.context.wait_one_update_all(self.imgGene) +class RGBSprite(pygame.sprite.DirtySprite, RGB) : + + def __init__(self, alpha=255) : + pygame.sprite.DirtySprite.__init__(self) + self.dirty = 2 # toujours dirty ! + RGB.__init__(self) + + self.image = pygame.Surface((640, 480)) + self._regular = pygame.Surface((640, 480)) + self.image.set_alpha(alpha) + self.rect = pygame.Rect((0, 0), (0, 0)) + + def update(self) : + RGB.update(self) + img = self.capture() + self._regular.blit(img, (0, 0)) + self.image.blit(pygame.transform.flip(self._regular, True, False), (0, 0)) + def main() : pygame.init() diff --git a/src/minwii/widgets/playingscreen.py b/src/minwii/widgets/playingscreen.py index 5829a4e..f6038fd 100755 --- a/src/minwii/widgets/playingscreen.py +++ b/src/minwii/widgets/playingscreen.py @@ -45,11 +45,11 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : self.columns = {} self._initColumns() self._running = False - self.draw(pygame.display.get_surface()) + self.kinectRgb = kinect.RGBSprite(alpha=128) + self.add(self.kinectRgb, layer=CURSOR_LAYER) self._initCursor() + self.draw(pygame.display.get_surface()) - self.kinectRgb = kinect.RGB() - self.kinectRgbSur = pygame.Surface((640, 480)) def _initRects(self) : """ création des espaces réservés pour @@ -99,16 +99,9 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : pygame.mouse.set_visible(False) while self._running : EventDispatcher.dispatchEvents() + self.kinectRgb.update() dirty = self.draw(pygame.display.get_surface()) pygame.display.update(dirty) - - self.kinectRgb.update() - rgbImg = self.kinectRgb.capture() - self.kinectRgbSur.blit(rgbImg, (0, 0)) - screen = pygame.display.get_surface() - screen.blit(pygame.transform.flip(self.kinectRgbSur, True, False), (0, 0)) - pygame.display.flip() - clock.tick(FRAMERATE) def stop(self) :