normally people just blit one surface to another with the "blit" method of
the dest surface:
http://www.pygame.org/docs/ref/surface.html#Surface.blit

so instead of this:
    frame = pygame.surfarray.array2d(screen2) #copies
    pygame.surfarray.blit_array(screen, frame)

you could do this:
    screen.blit(screen2, (0,0))

...but if you are getting the "frame" array anyways for another purpose,
then the blit_array call is a perfectly fine way to go - it shouldn't
perform any different in your case (i.e. not using hardware display
suraces), and it means you are actually rendering what you are working with,
which can be a good thing.


On Tue, May 26, 2009 at 4:02 PM, Vero E. Arriola
<blackzafiro....@gmail.com>wrote:

> Hey! I got a way to make it work.  Is this the way surfaces are supposed to
> be used??? Thanks ;)
>
> import pygame, sys
> from pygame.locals import *
>
> filepath = "esponja.mpg"
> pygame.init()
> pygame.mixer.quit()
> pygame.surfarray.use_arraytype("numpy")
>
> movie = pygame.movie.Movie(filepath)
> size = w, h = movie.get_size()
> screen = pygame.display.set_mode(size)
> screen2 = pygame.Surface(size)
> movie.set_display(screen2, Rect((0, 0), size))
>
> def play():
>   i = 0
>   frame_number = 0
>   while(1):
>     frame_number = movie.render_frame(i)
>     frame = pygame.surfarray.array2d(screen2) #copies
>     print frame
>     pygame.surfarray.blit_array(screen, frame)
>     pygame.display.flip()
>
>     if frame_number < i:
>       break
>     i = i + 1
>   movie.rewind()
>
>

Reply via email to