1
2
3
4
5
6
7
8
9 import pilas
10 from pilas.actores import Animado
11 import copy
12
13 VELOCIDAD = 10
14
15
17 """Representa una animacion de una grilla de imagenes.
18
19 Este actor toma una grilla de cuadros de animacion
20 y los reproduce hasta que la animacion termina. Cuando
21 la animacion termina se elimina a si mismo.
22
23 El constructor tiene algunos parámetros de utilidad:
24
25 - El parámetro ``ciclica`` permite hacer animaciones infinitas, que se repiten siempre, por defecto vale ``False`` que significa que la animación terminará y no se repetirá.
26 - El parámetro ``velocidad`` tiene que ser un número que indicará la cantidad de cuadros por segundo que se tienen que mostrar en la animación.
27
28 Por ejemplo, para mostrar una explosión infinita podrías escribir:
29
30 >>> grilla = pilas.imagenes.cargar_grilla("explosion.png", 7)
31 >>> animacion = pilas.actores.Animacion(grilla, ciclica=True, velocidad=1)
32
33 .. image:: images/actores/explosion.png
34 """
35
37 """ Constructor de la Animación.
38
39 :param grilla: Grilla de imagenes obtenida mediante pilas.imagenes.cargar_grilla()
40 :type grilla: `Grilla`
41 :param ciclica: Indica si la animación se realizará de forma infinita.
42 :type ciclica: boolean
43 :param x: Posicion horizontal del Actor.
44 :type x: int
45 :param y: Posicion vertical del Actor.
46 :type y: int
47 :param velocidad: Indica la cantidad de cuadros por segundo que se monstrarán.
48 :type velocidad: int
49 """
50
51 Animado.__init__(self, grilla, x=x, y=y)
52 self.tick = 0
53 self.ciclica = ciclica
54 self.definir_velocidad_de_animacion(velocidad)
55
57 """ Define la cantidad de frames por segundo que se mostrarán.
58
59 :param velocidad_de_animacion: Cantidad de cuadros por segundo.
60 :type velocidad_de_animacion: int
61 """
62 self._velocidad_de_animacion = (1000.0 / 60) * velocidad_de_animacion
63
65 """ Obtiene la cantidad de cuadros por segundo de la animacion.
66
67 :return: int
68 """
69 return self._velocidad_de_animacion
70
71 velocidad_de_animacion = property(obtener_velocidad_de_animacion, definir_velocidad_de_animacion, doc="Es la cantidad de cuadros por segundo a mostrar")
72
74 """ Hace avanzar la animacion. """
75 self.tick += self.velocidad_de_animacion
76
77 if self.tick > 1000.0:
78 self.tick -= 1000.0
79 ha_avanzado = self.imagen.avanzar()
80
81
82 if not ha_avanzado and not self.ciclica:
83 self.eliminar()
84