Package pilas :: Package actores :: Module animacion
[hide private]
[frames] | no frames]

Source Code for Module pilas.actores.animacion

 1  # -*- encoding: utf-8 -*- 
 2  # Pilas engine - A video game framework. 
 3  # 
 4  # Copyright 2010 - Hugo Ruscitti 
 5  # License: LGPLv3 (see http://www.gnu.org/licenses/lgpl.html) 
 6  # 
 7  # Website - http://www.pilas-engine.com.ar 
 8   
 9  import pilas 
10  from pilas.actores import Animado 
11  import copy 
12   
13  VELOCIDAD = 10 
14   
15   
16 -class Animacion(Animado):
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
36 - def __init__(self, grilla, ciclica=False, x=0, y=0, velocidad=VELOCIDAD):
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
56 - def definir_velocidad_de_animacion(self, velocidad_de_animacion):
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
73 - def actualizar(self):
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 # Si la animacion ha terminado se elimina de la pantalla. 82 if not ha_avanzado and not self.ciclica: 83 self.eliminar()
84