Ejercicios y actividades

En esta sección el lector ha podido realizar una aproximación básica a las posibilidades de la herramienta de creación MetaCard y la utilización de su lenguaje de programación (MetaTalk). Ahora le propongo una serie de breves ejercicios que toman como base lo visto hasta el momento para desarrollar nuevos ejemplos.

Empezaremos con actividades que puede buscar directamente en la documentación referenciada: las MetaClasses. A partir de estas lecciones es posible realizar una serie de cuestiones prácticas cuya respuesta la podrá encontrar dentro de ellas.

  1. De la lección tituladaThe Basics: Understanding stacks, substacks and mainStacks, anote el código necesario para:

    • Crear una pila a modo de "Menu Bar" que permita al usuario:

      1. Hacer desaparecer la barra de título de una pila.

      2. Abrir una pila de disco, sin activar sus scripts asociados.

      3. Abrir una pila en modo palette, modeless, modal o topLevel, a elección del usuario.

      4. Cambiar de tarjeta en una pila sin activar sus scripts.

    • Crear una pila, cuyo comportamiento es el de mostrar un mensaje de espera (o de bienvenida) mientras se da tiempo a cargar una subpila sobre la misma ventana.

  2. En la lección "StackFiles", hay un punto importante sobre el que le propongo una cuestión como reflexión. Volveremos sobre esto en repetidas ocasiones.

    • Realizar un ejemplo que muestre el inconveniente de utilzar rutas absolutas para referirse a ficheros y cómo utilizar rutas relativas.

  3. A partir de la lección titulada Messages and the Message Hierarchy: habrá de:

    • Comprobar experimentalmente que, si se no se captura un mensaje, este recorre la jerarquía de mensajes.

    • Sobre el ejemplo anterior, identificar sobre qué objeto se originó el mensaje (pruebe con la ayuda de target).

    • Utilizar esta técnica para actuar sobre los objetos que componen un grupo de manera que se realice la misma acción sobre diferentes elementos (por ejemplo mostrar una imagen cuya ruta está indicada esos controles).

    • Comprobar, experimentalmente la diferencia ente los mensajes preOpenStack y openStack; así como con preOpenCard y openCard (p. ej.:con height).

  4. La unidad que lleva por nombre Using the Send Command:le instruirá acerca de:

    • ¿Cuál es la utilidad de la orden call?...

    • Probar el ejemplo de animación de unos títulos de créditos que acompañana esta "metaclase" y las modificaciones para asegurar que la ejecución planeada se realizada en un tiempo dado.

  5. Por la relación exitente entre las siguientes actividades tendrá que consultar las "lecciones" de Using Files with MetaCard, Groups and Background y Text Management, para encontrar soluciones a:

    • Descargar una imagen de Internet para ubicarla en un objeto de tipo imagen ya creado.

    • Implementar un control que utilizando un botón con el estilo de pestañas (Tabbed button) permita realizar difentes acciones sobre los contenidos de un campo de texto.

    • Implementar las acciones del anterior control en base a las posibles expresiones o porciones (chunks) que sobre el texto pemite MetaCard: caracteres (character), palabras (word), items (item) y líneas (line).

    • Incluir nuevas opciones para las operaciones de búsqueda de texto (contains, is in y is among) y de localización (offset, itemOffset, wordOffset y lineOffset).

    • Proceder de manera análoga para find, replace y matchText.

  6. Para animar una presentación en MetaCard sobre los vientos, se está diseñando una tarjeta donde irán apareciendo los nombres de los ocho principales vientos y se colocarán en la posición correspondiente, situándose a modo de "rosa de los vientos". Suponiendo que:

    • Se ha creado y ocultado un gráfico (llamado 'vectorDePosicions') que indica cuáles son esas posiciones.

    • Los nombres de los vientos están en otros tantos campos de texto, inicialmente ocultos y situados en el centro del gráfico mencionado; con nombres de la forma 'nomX', donde X toma valores entre 1 y 8.

    • Escriba el código del manejador 'on iniciaAnimacio' que lanza la animación.

  7. Rellene el código siguiente a partir de los comentarios que se incluyen en el mismo.

    on iniciaAnimacio
     # Recoger los puntos donde mover los objetos
      put _____________________________________________"vectorPosicions" into vector
    
     # Hacer el mismo proceso para cada objeto
      repeat ____________________________________________
    
        # Mostrarlo
        ________________________ ("nom" & i)
    
        # Moverlo a las coordenadas correspondientes
        ________________________ ("nom" & i) to (line i of vector)  
    
        # Hacer un poco de tiempo antes del siguiente movimiento
        wait 1 second
      end repeat
    end iniciaAnimacio