We Recommend

Learning Python Learning Python
The authors of Learning Python show you enough essentials of the Python scripting language to enable you to begin solving problems right away, then reveal more powerful aspects of the language one at a time. This approach is sure to appeal to programmers and system administrators who have urgent problems and a preference for learning by semi-guided experimentation.


Posted By

n3x on 08/15/07


Tagged


Versions (?)


Who likes this?

2 people have marked this snippet as a favorite

danigm
taboularasa


class TimedFrameAnimation(Sprite)


Published in: Python 


  1. def __init__(self, frames, time):
  2. """frames stores tuples (duration in ms, image-surf)"""
  3. self.start_time = time
  4. # personally, i would define the frames tuples the other way around and
  5. # just turn this around:
  6. durations, self.frame_list = zip(*frames)
  7. # next line does the same as
  8. # reduce(lambda l, v: l + [v + l[-1]], durations[1:], [durations[0]]) ;->
  9. self.frame_end_time = [sum(durations[:i + 1]) for i in xrange(len(durations))]
  10. self.run_time = self.frame_end_time[-1]
  11. self.image = self.frame_list[0][1]
  12. self.rect = self.image.get_rect()
  13.  
  14. def update(self, time):
  15. play_position = (time - self.start_time) % self.run_time
  16. # the above doesn't really work with a pausing feature, but you could
  17. # remember the pause time, and when you unpause, recompute the start_time
  18. for i, f in enumerate(self.frame_end_time):
  19. if play_position <= f:
  20. break
  21. self.image = self.frame_list[i]
  22. self.rect = self.image.get_rect()

Report this snippet 

You need to login to post a comment.