Sounds like you've got a "filmstrip" as your source image.  Why not just
break the filmstrip up into multiple Surfaces during the __init__ method of
your Charactor sprite, and set one of the surfaces to be the "current"
self.image?

def breakup_filmstrip(filepath):
  ... (return a list of Surfaces from the source image)

class MyCharactor(Sprite):
  def __init__(...):
    ...
    self.all_images =
itertools.cycle(breakup_filmstrip('/foo/bar/myfilmstrip.png'))
    self.image = self.all_images.next()

  def update(...):
    ...
    self.image = self.all_images.next()

Shandy

On Fri, Apr 16, 2010 at 7:55 AM, vincent.blazutti <
vincent.blazu...@laposte.net> wrote:

> With more detail (sorry if that's a noob problem) :
> I use a big picture with different view of the plane (the charactor), so I
> need to display only the good part of the surface. In my crappy version I
> have 3 attribute for the plane sprite : surface, source rect, and
> destination rect. Everytime I refresh the screen, I use those attribute to
> perform the blit().
>
> In the MVC example, for the CharactorSprite, the update() method is
> overrided, it just move the destination rect, then in the view, the update()
> method is called, then the draw() method that return modified rect, and then
> the display.update is done. The draw() method need that rect and image
> attribute exist in the Sprite object to work. But it does not talk about any
> source rect to choose only a small part of the surface it's going to draw.
>
> So my question is : is there any already existing attribute in the Sprite
> class that I can use to specify the source rect that draw() will use ? Or do
> I have to rewrite the Notify() of the view and replace the draw() method by
> a blit() one to do so ?
>
> Third option : maybe I don't really understand what the Group.draw()
> does...
>
>
>
>
> > Message du 16/04/10 16:00
> > De : "B W"
> > A : pygame-users@seul.org
> > Copie à :
> > Objet : Re: [pygame] Source rect for sprites in a RenderUpdate group
>
> >
> > Without knowing details, one can only conjecture. You might use
> Group.update(*args) to get info to each sprite. The sprite group in turn
> calls Sprite.update(*args). You can pass anything, such as a source rect to
> use in computing relative offsets, a list or dict of rects, or a callback
> function.
> >
> > Gumm
> >
>
>
>
> [image: 
> Pieddemail]<https://compte.laposte.net/inscription/index.do?jeux=201001FOOTER>

Reply via email to