pilas.actores.animacion

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
    64 -    def obtener_velocidad_de_animacion(self):
    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