3er paso: Interacción entre objetos (parte II)

¡El mundo de Murci se ha transformado un poco…!, aunque la función de su nuevo compañero no parece ser —por ahora— mucho más que decorativa en fin, peor es nada.
La introducción de un nuevo objeto en el proyecto seguramente nos dará la posibilidad de enriquecer al mismo, pero nos enfrentará a un nuevo dilema: en aquellas situaciones donde 2 o más objetos se superpongan parcial o totalmente sobre el escenario ¿cómo definir quién tendrá prioridad de visualización por sobre el otro (quién "tapará" a quién)? ¿cómo podemos controlar y definir nosotros esa situación?
Antes de avanzar en la respuesta que desde Scratch se dá a estas preguntas, deberemos hacer un pequeño aparte para exponer un concepto importante: el de trabajo con capas (layers). Armate de paciencia (yo lo estoy haciendo).

Las capas: un concepto útil

Es relativamente común en el mundo "virtual" de las herramientas de software apelar a algo que en la jerga informática se denomina "metáfora"
Un ejemplo típico y conocido de metáfora es aquella que usamos al pensar en un "sistema de archivos" a la hora de almacenar y organizar la información que guardamos en nuestra computadora: hablamos de carpetas y de documentos, e incluso los íconos mostrados nos remiten a ficheros, carpetitas y hojitas como los de la vida "real".
Dado el ¿obvio? ejemplo, digamos que tras la idea de metáfora se expresa el intento de vincular o explicar algún proceso o método que pueda ser realizado por el software con algo conocido, tangible, entendible, concreto, del mundo "real".

El concepto de Capas es desde este punto de vista una metáfora. Quienes apelaron primero a esto fueron los programas de edición de imágenes (tipo Photoshop) y luego, al estar asentada la idea, la aprovecharon los programas que permiten hacer animaciones (tipo Flash o cualquier editor de video) y muchos otros… Scratch no es la excepción.

Las capas en el mundo "real"

Si alguien pensó relacionar "...murciélagos, Batman, capas...", les voy aclarando que no vamos por ese lado: estamos pensando más bien en láminas apiladas unas sobre otras y en determinado orden.
Ideas como las distintas capas de suelo tectónico, como las capas que constituyen la atmósfera, como los anillos de crecimiento en el tronco de un árbol, etc., se adaptan también a nuestra metáfora.
Si estos ejemplos te parecen muy difíciles, pensá en las capas de ropa que vestís en invierno: una remera, un buzo, una campera… existe un orden, y unas prendas tapan a otras.
Pero busquemos un ejemplo real que se adapte aún más a la metáfora que estamos proponiendo: imaginate que tenemos una serie de láminas transparentes de acetato —u otro material similar— que tienen sólo parte de su superficie pintada con algún dibujo: donde no hay dibujo se podrá ver (dada su transparencia) lo que hay debajo.
Con la superposición de estas capas de acetato conseguiremos conformar una imagen más compleja, que integra las imágenes simples de cada capa respetando un orden de prioridad. Los gráficos que ves a la derecha —tomados del manual de ayuda del Gimp, un editor de imágenes gratuito similar al Photoshop— quizás te ayuden a entender lo que quiero explicar.
Como se ve en el ejemplo, a la imagen del libro se le superponen claramente las correspondientes a las tres capas que tiene por encima ; si la capa del libro fuese colocada por sobre todas las demás, la imagen final no sería la misma. También conviene destacar que para las capas con imágenes que no se superponen con otras, el orden podría cambiarse sin afectar el resultado.

capas de imágenes

capas

imagen final

resultado

Las capas en el mundo "Scratch"

La utilidad básica del uso de capas en un editor de imágenes es que por un lado permite la composición o montaje de distintos archivos gráficos, y también permite que cada capa pueda ser manipulada sin afectar a las otras. Similar apreciación vale para las herramientas de edición de video.
Pero ¿qué pasa con Scratch? ¿Qué uso hace —y con que criterios— de este concepto de capas?

  • En Scratch siempre la capa inferior corresponde a lo que llamamos escenario (¡huy, escenario también es una metáfora!) ; por tanto, la imagen que se vé debajo de todos los objetos es la de alguno de los fondos del escenario (acotemos que un escenario puede tener más de un fondo, aunque por ahora nosotros estemos usando uno sólo).
  • Todo objeto que sea parte de un proyecto tendrá una capa asociada, es decir, podríamos pensar que su imagen está instante a instante siendo mostrada sobre una película transparente que deja ver todo lo que está debajo (tal como describimos al hablar de la metáfora de capas).
  • El orden de las capas responde en un principio a un criterio cronológico: al último objeto agregado le corresponde la capa superior, al penúltimo la capa inmediatamente debajo de la anterior,… y así sucesivamente hasta llegar a la capa inferior (que siempre corresponde al escenario). Este orden podrá cambiarse posteriormente vía selección de objetos sobre el escenario, o vía programación.

Todo lo que involucra el tema Capas presenta dificultades a la hora de intentar ser explicado de la manera más simple posible (y complicado de entender, especialmente si nunca usaste ningún programa que se apoye en esta metáfora).
Si comprendiste el ejemplo que dimos seguí leyendo… sino te aconsejo que lo repases, de manera de poder avanzar en lo que viene.

Controlar el orden de las capas (I)

Como presentamos muchas ideas nuevas de golpe y quizás estés algo perdido, enfoquemos la atención en lo importante:
Poder determinar con que orden de prioridad se mostrarán los objetos es clave en el resultado final de nuestros proyectos. Como ya anticipamos en los párrafos anteriores, todo se reduce a controlar en que orden se colocarán las capas asociadas a los objetos.
Vamos a ver en primera instancia un caso particular que se aplica a la gran mayoría de los proyectos que vayas a hacer con Scratch (incluyendo el que tratamos en este tutorial), y dejaremos el caso más complejo y general para un apéndice posterior (si hay tiempo), o para otro tutorial.
Este caso particular que vamos a tratar involucra a todos los proyectos donde el orden de las capas "se piense" como fijo e inalterable durante toda la ejecución del programa. Dicho de otra manera, en dichos proyectos no se presentará la necesidad de redefinir el ordenamiento en la visualización de los objetos.
Ergo: deberemos definir el orden una sola vez y mantenerlo.
Para explicar como puede manejarse este caso particular vamos a crear un proyecto transitorio… basta de palabras, pues.

Creemos un nuevo proyecto

No voy a ser detallista esta vez… presupongo que si llegaste hasta aquí es porque ya dominás Scratch lo suficiente como para hacer lo siguiente:
nuevo proyecto
  • Crear un nuevo proyecto en blanco.
  • Cambiar el fondo del escenario: vamos a usar underwater, ubicado en la carpeta Nature.
    Recordemos que el escenario tiene una capa asociada, que se ubicará siempre por debajo de todas las otras capas que se agreguen.
  • Como ya sabemos, los gatos no se llevan bien con el agua. Borremos entonces ese objeto.
  • Agreguemos ahora un nuevo objeto: el elegido es crab1-a, un hermoso cangrejo que encontraremos en la carpeta Animals.
    Nuestro nuevo amigo aparecerá posicionado en (x=0; y=0), con dirección 90º  y con la opción giro habilitado como valores iniciales predeterminados.
    Aunque Scratch no nos dé pista alguna sobre esto se estará creando una nueva capa al crear el objeto, la que se posicionará automáticamente como capa "de frente", es decir, por sobre cualquier otra capa existente. En nuestro caso se sumará a la capa del escenario. TOTAL: 2 capas.
  • Vamos a añadir un segundo objeto, en este caso será starfish1-a (también presente en la carpeta Animals)… sus cinco puntas denotan su condición de estrella de mar.
    Salvo sus coordenadas de (x=10; y=10), el resto de sus condiciones iniciales declaradas son similares a las del objeto anterior.
    Ahora tendremos una tercer capa asociada al objeto estrella de mar (consecuente como siempre, Scratch lo etiqueta como Objeto2). Si no entendiste lo de "criterio cronológico" aquí lo tenés en acción: la nueva capa ocupará la posición superior de manera predeterminada, quedando el cangrejo debajo de ella. TOTAL: 3 capas.
  • Llevemos las cosas un poco más allá insertando otro objeto más a nuestro proyecto. Date un tiempo para anticipar que es lo que puede suceder. ¿Listo? Vamos a seleccionar (también de la carpeta Animals) a octopus1-a —alias el pulpo— como imagen para el nuevo objeto. Él aparecerá con coordenadas (x=20; y=20), y con el resto de sus condiciones iniciales sin nada para destacar.
    Tenemos una nueva capa. Como era de esperar —y respondiendo a lo enunciado— el objeto más reciente ocupará un lugar de privilegio: la capa superior. Es decir, lo más nuevo por sobre todo lo demás (casi que dá para filosofar sobre la modernidad…). TOTAL: 4 capas.

Como resultado de seguir los pasos enumerados previamente deberías ver la confusa imagen que encabeza este instructivo. Vemos que respecto al orden de visualización de los objetos se cumple con el criterio cronológico enunciado con anterioridad: pulpo, estrella de mar, cangrejo.

Cambiemos el orden

Vamos a mostrar el método más simple para cambiar el ordenamiento inicial que nos entrega Scratch. Recordá que este método te va a servir para la gran mayoría de tus proyectos futuros, y que no involucra ningún bloque de programación… solo es necesario manipular los objetos por sobre el escenario.
En nuestro caso también nos servirá para "emprolijar" la imagen que vimos arriba.
nuevo proyecto
Probá moviendo los otros objetos (siempre tratando que se superpongan mutuamente), y seguí haciéndolo hasta asegurarte de entender como cambia el ordenamiento.
La metáfora más útil para entender esto es pensar en una baraja de cartas descansando sobre una mesa… si retiro una carta para verla, las que estaban sobre ella se acomodarán un "nivel" hacia abajo (sus capas bajarán un nivel).
Para que el modelo concuerde, debemos especificar que la carta retirada se deberá reintegrar al mazo en la posición superior (la capa que está "al frente"). Es decir: saco una carta, y la pongo arriba… y así sucesivamente.
La metáfora de la baraja de cartas se adecúa perfectamente al manejo que hace Scratch de las capas ; conviene aclarar que la capa inferior (la del escenario) se corresponde con la mesa donde apoyar las cartas, y que la cantidad de objetos que tengamos en el proyecto se correspondería con la cantidad de cartas de la baraja. ¿Te convence?

Como usar este método

Primero que nada debemos tener bien en claro cual es el ordenamiento de capas que queremos en nuestro proyecto (¡obvio!).
Después hay que seleccionar y mover los objetos —tal como probamos con nuestros amigos acuáticos— empezando con el que se corresponde con la capa "más al fondo", luego con el de la capa inmediata superior a ésta… y así hasta llegar al objeto que irá "al frente": es decir, empezamos con el objeto de menor prioridad visual hasta llegar al que tiene la mayor.
¿Esto es todo? Casi. Hay que recordar de no volver a mover los objetos haciendo clic en ellos sobre el escenario, porque si no ¡desarmamos la baraja, y a ordenar de nuevo!

Sugerencia: una vez ordenadas las capas, guardá el proyecto… Scratch  recordará el orden que impusiste la próxima vez que lo abras.

¿Y como reubico posteriormente mis objetos?, me dirás. Bien, aquí se demuestra la importancia de manipular las posiciones mediante los bloques ir a x:( ) y:( ) y no arrastrando los objetos en el escenario (sólo recomendable en las primeras etapas del proyecto, cuando estás probando cosas).
Para terminar, recordemos que: [1] este método se aplica al caso particular (aunque muy común) que detallamos más arriba, y [2] que no recurre a bloques de programación para su resolución.

IMPORTANTE

Más adelante (… en algún futuro tutorial) hablaremos en detalle de la solución a la que se puede llegar programando… aunque anticipemos que la metáfora de la baraja que usa Scratch termina conspirando contra un control claro del ordenamiento de las capas vía programación (lo más probable es que al mover una capa se afecte el ordenamiento de muchas más).
Hice mi mejor intento para explicar que son las capas y como lidiar con ellas. Veamos a continuación como podemos aplicar nuestro nuevo saber en el ¿olvidado? proyecto de Murci
Última actualización: Febrero 22, 2014

No hay comentarios.:

Publicar un comentario

© Scratch CodeLab | D153ñ0 b454d0 3n l4 pl4n71ll4 SimpleRWD d3 Oloblogger