data/manual/migrar_al_gestor_de_escenas/index.html
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Como migrar mi juego al nuevo Gestor de Escenas - pilas-engine</title>
<link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="../css/theme.css" type="text/css" />
<link rel="stylesheet" href="../css/custom.css" type="text/css" />
<link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
<link rel="stylesheet" href="../css/highlight.css">
<script src="../js/jquery.min.js"></script>
<script src="../js/modernizr.min.js"></script>
<script type="text/javascript" src="../js/highlight.pack.js"></script>
<script src="../js/theme.js"></script>
<style>
body {font-size: 90%;}
pre, code {font-size: 100%;}
h3, h4, h5, h6 {color: #2980b9; font-weight: 300}
</style>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" id='lateral' class="wy-nav-side stickynav">
<div class="wy-side-nav-search">
<a href=".."> pilas-engine</a>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1 ">
<a class="" href="../instalacion">Instalación</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../about">Acerca de ...</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../empezando">Empezando y los primeros pasos con pilas</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../actores">Actores</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../actores_personalizados">Actores personalizados</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../grupos">Grupos</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../colisiones">Colisiones</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../etiquetas">Etiquetas</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../fisica">Fisica</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../controles">Controles</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../joystick">Joystick</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../imagen">Imagen</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../sonidos">Sonidos</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../dibujado_simple_en_pantalla">Dibujado simple en pantalla</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../dibujado_avanzado_con_superficies">Dibujado avanzado con Superficies</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../tareas">Manejo de tiempo con tareas</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../interpolacion">Interpolaciones</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../controlando_la_pantalla">Controlando la pantalla</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../comportamientos">Comportamientos</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../escenas">Escenas</a>
</li>
<li class="toctree-l1 current">
<a class="current" href=".">Como migrar mi juego al nuevo Gestor de Escenas</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../gestor_de_escenas">Nuevo Gestor de Escenas</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../demos">Demos</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../interfaz">Interfaz de usuario</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../menu">Como crear menúes para tu juegos</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../mapas_y_plataformas">Mapas y plataformas</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../dialogos">Diálogos</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../camara">Manejo de Cámara</a>
</li>
<span>Eventos</span>
<li class="toctree-l1 ">
<a class="" href="../eventos">conexiones y respuestas</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../texto">Textos</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../habilidades">Habilidades</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../depurando">Depurando</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../como_funciona_pilas_por_dentro">¿Cómo funciona pilas por dentro?</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../complementos">Complementos</a>
</li>
<li class="toctree-l1 ">
<a class="" href="../desarrolladores">Guía para desarrolladores</a>
</li>
</ul>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
<a href=".."></a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href=".." onclick='return alternar_menu();'>Docs</a> »</li>
<li>Como migrar mi juego al nuevo Gestor de Escenas</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main">
<div class="section">
<h1 id="como-migrar-mi-juego-al-nuevo-gestor-de-escenas">Como migrar mi juego al nuevo Gestor de Escenas</h1>
<p>Antes de migrar tu juego al nuevo sistema de gestión de escenas, es mejor que
le des un vistazo a <code>gestor_de_escenas</code> para comprender mejor el
apilamiento de escenas.</p>
<p>Ahora pasamos a explicar los sencillos pasos a seguir para hacer la migración de tu juego.</p>
<h2 id="iniciar-el-juego">Iniciar el juego</h2>
<p>Tu juego debe tener una estructura de inicio parecida a la siguiente:</p>
<pre><code>import pilas
import escena_menu
pilas.iniciar(titulo='Mi titulo')
escena_menu.EscenaMenu()
pilas.ejecutar()
</code></pre>
<p>Lo único que deberás cambiar aquí es la línea que llama a la escena.
Tendrá que quedar de la siguiente forma:</p>
<pre><code>import pilas
import escena_menu
pilas.iniciar(titulo='Mi titulo')
# Esta es la línea que debemos cambiar
pilas.cambiar_escena(escena_menu.EscenaMenu())
pilas.ejecutar()
</code></pre>
<h2 id="escenas-del-juego">Escenas del juego</h2>
<p>Todas las escenas de tu juego deben heredar ahora de <code>pilas.escena.Base</code>.</p>
<pre><code>class MiEscena(pilas.escena.Base):
</code></pre>
<p>Y el otro cambio que debes realizar en las escenas es que el método <code>__init__(self)</code> no debe
contener nada más que la llamada al <code>__init__</code> de la escena Base</p>
<pre><code>def __init__(self):
pilas.escena.Base.__init__(self)
</code></pre>
<p>Luego debes definir un método <code>iniciar(self)</code> donde podrás crear los
nuevos actores y lo necesario para iniciar tu escena.</p>
<pre><code>def iniciar(self):
pilas.fondos.Pasto()
mono = pilas.actores.Mono()
</code></pre>
<p>Aquí un ejemplo de como debería ser el cambio.</p>
<p><strong>Escena antigua</strong></p>
<pre><code>class MiEscena(pilas.escenas.Escena):
def __init__(self):
pilas.escenas.Escena.__init__(self)
pilas.fondos.Pasto()
mono = pilas.actores.Mono()
</code></pre>
<p><strong>Escena nueva</strong></p>
<pre><code>class MiEscena(pilas.escena.Base):
def __init__(self):
pilas.escena.Base.__init__(self)
def iniciar(self):
pilas.fondos.Pasto()
mono = pilas.actores.Mono()
</code></pre>
<h2 id="cambio-de-escena">Cambio de Escena</h2>
<p>En algún punto de tu juego, llamarías a otra escena para cambiarla.</p>
<pre><code>escena_juego.Escena_Juego()
</code></pre>
<p>Debes sustituir esta llamada a la nueva escena por esta otra forma:</p>
<pre><code>pilas.cambiar_escena(escena_juego.Escena_Juego())
</code></pre>
<h2 id="eventos">Eventos</h2>
<p>Ahora los eventos son individuales por cada escena.
Si quieres conectar a algún evento, como <code>mueve_mouse</code>, <code>actualizar</code>, <code>pulsa_tecla</code>, puedes
hacerlo de cualquiera de las dos siguientes formas:</p>
<pre><code>def mi_metodo(evento):
# Hace algo
pilas.eventos.actualizar.conectar(mi_metodo())
# Otra forma de conectar
pilas.escena_actual().actualizar.conectar(mi_metodo())
</code></pre>
<p>Ambas formas conectan a los eventos de la escena actualmente activa.</p>
<p>Si deseas crear tu propio evento, lo deberás hacer de la siguiente forma:</p>
<pre><code>pilas.eventos.mi_evento_personalizado = pilas.evento.Evento("mi_evento_personalizado")
pilas.eventos.mi_evento_personalizado.conectar(self._mi_evento_personalizado)
</code></pre>
<h2 id="fin-de-la-migracion">Fin de la migración</h2>
<p>Con estos simples pasos, tu juego debe funcionar sin problemas con el nuevo
sistema de gestión de escenas.</p>
<p>Ante cualquier problema no tengas dudas en ponerte en contacto con nosotros
mediante el <a href="http://foro.pilas-engine.com.ar/">foro de pilas-engine</a>.</p>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../gestor_de_escenas" class="btn btn-neutral float-right" title="Nuevo Gestor de Escenas"/>Siguiente <span class="icon icon-circle-arrow-right"></span></a>
<a href="../escenas" class="btn btn-neutral" title="Escenas"><span class="icon icon-circle-arrow-left"></span> Anterior</a>
</div>
<hr/>
<div role="contentinfo">
<p>
<!-- Copyright etc -->
</p>
</div>
Creado con <em>MkDocs</em>.
<script>
$(document).ready(function() {
$('img').each(function(elemento) {
if (this.src.indexOf('github.io') > 0) {
this.src = this.src.replace('github.io/imagenes', 'github.io/pilas-manual/imagenes');
}
});
});
</script>
<script>
$(document).ready(function() {
String.prototype.endsWith = function(suffix){
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
$('a').each(function(){
var x=this.href;
if (!this.href.endsWith('html') && this.href.indexOf('#') < 0) {
if (this.href.endsWith('/')) {
this.href = this.href + "index.html";
} else {
this.href = this.href + "/index.html";
}
}
});
});
</script>
<script>
function alternar_menu() {
var left = parseInt($('#lateral').css('left'), 10);
if (left !== 0) {
$('#lateral').css('left', '0px');
return false;
}
}
</script>
<style>
.rst-versions {
border: 0 !important;
}
.wy-nav-side {
padding-bottom: 50px;
}
.wy-nav-content-wrap {
background-color: white !important;
}
.wy-nav-content {
background-color: white !important;
}
</style>
</footer>
</div>
</div>
</section>
</div>
</body>
</html>