Javier Valero Cejudo

javace

PROGRAMACIÓN MULTIMEDIA

En esta página web se mostrarán todos los ejercicios y las prácticas de laboratorio realizados en la asignatura de Programación multimedia de 3º Ingeniería Multimedia desarrolladas en el curso 2018/19

EJERCICIOS Y PRÁCTICAS

HTML y CSS básico. Uso de selectores.

Escribir el código HTML y CSS de una página web donde se modifiquen las siguientes  propiedades mediante una hoja de estilo.

  • El cuerpo de la página tendrá un color de fondo negro.
  • El título de tamaño H1 será:
    • Fuentes de tipo: Book Antiqua, Century Gothic y Garamond y tamaño 24 px.
    • Letra de color blanco y negrita.
    • Espaciado entre letras: 0.5 em.
    • Centrado.
    • Un marco de color azul claro en el que sólo se verán las líneas superior e inferior.
  • Una clase para los párrafos llamada 'miparrafo' con:
    • Fuente tipo: Georgia o Times New Roman y tamaño 15 px.
    • Letra de color blanco.
    • Separación entre líneas equivalente al 150% de la separación normal.
  • Hipervínculos no visitados:
    • Fuente tipo: Courier New, tamaño 16 px.
    • Color de blanco y negrita.
    • Fondo gris oscuro.
    • Espaciado entre letras: 0,2 em.
    • No subrayado.
  • Hipervínculos con el ratón encima:
    • Fuente: Courier New, tamaño 16 px.
    • Color de letra negro y negrita.
    • Fondo blanco.

HTML y CSS básico: capas, fuentes de texto, hipervínculos.

Escribir el código HTML Y CSS de una página Web con las siguientes características. La  página contendrá dos capas, una para el menú situado a la izquierda y otra para el  contenido de la página. El menú situado en la parte de la izquierda estará dentro de una  capa con las siguientes propiedades:

  • Dimensiones: ancho=100 px, alto= 150 px.
  • Posición absoluta respecto a la página: Izquierda: 10 px, Arriba: 40 px.
  • Estilo de los vínculos del menú:
    • Vínculo sin pulsar: Color del texto= azul oscuro; Tipo de letra=cursiva y  negrita; color de fondo: azul claro; bordes= superior e inferior de 1 px de  tamaño y color azul oscuro; no subrayado.
    • Vínculo cuando el ratón está sobre él: color del texto= blanco; Tipo de  letra=cursiva y negrita; color de fondo= azul oscuro; bordes = superior e  inferior de 1 px de tamaño y color azul oscuro; no subrayado.

En la parte de la derecha tenemos otra capa con las siguientes propiedades:

  • Dimensiones: ancho=600 px, alto= 300 px.
  • Posición absoluta respecto a la página: Izquierda: 120 px, Arriba: 40 px
  • Aspecto de la capa: borde de 1 px de color azul claro
  • Aspecto del texto:
    • Cabecera H1: fuente= verdana; tamaño= 18 px; estilo= cursiva; color = azul  oscuro; borde inferior de 2 px, azul oscuro, y estilo sólido.
    • Texto de párrafo normal: fuente= verdana; tamaño = 14 px; color = gris oscuro

Uso de selectores avanzados.

Utilizar los selectores CSS para crear una página con una plantilla con las siguientes propiedades. El CSS modificará el color de fondo de toda la página y el tipo de fuente poniéndolos a:  #FEFCDA y fuente "Comic Sans MS";

Dentro de la página tendremos una capa con contenidos. Esta capa tendrá el fondo de  color blanco y además:

  • El aspecto del primer párrafo será distinto, tamaño de letra más grande y cursiva
  • La primera letra de cada párrafo tendrá un tamaño mayor, negrita y color distinto al  resto del texto
  • Por  último  tendremos  una  tabla  con  datos  donde  las  columnas  pares  e  impares  tendrán diferente color de fondo

Todos estos cambios de aspecto deben hacer haciendo uso de los selectores por posición de  CSS

Uso de selectores por atributo

Haciendo uso de los selectores por atributos crea el CSS (sin tocar el código HTML)

Box model. Dimensiones y posición II

Modifica el código CSS (sin tocar el HTML) 

Visibilidad de capas

Crea una página web que contenga dos capas, una que permanece fija y otra que aparece  y desaparece cuando se sitúa el ratón sobre la primera capa o cuando sale el ratón de ella.  Utilizar para ello los eventos de javascript onmouseover/onmouseout sobre la primera capa

Bordes

Crear tres capas modificando el borde y el color del borde para que tengan la apariencia de la imagen

Sombras y background

Crear una capa con un color de fondo y dos sombras exteriores de diferente color

Columnas

Añádele el código CSS a este HTML para que se visualice como en la imagen: tres columnas, una cabecera que ocupa todo el espacio, líneas separadoras entre columnas de color rojo y punteadas, espaciado entre el texto y el marco de 20px. Recuerda utilizar el prefijo –webkit en las propiedades para que se visualice correctamente

Transparencia

Crear tres capas como en la imagen usando transparencias para que puedan verse los colores de las capas inferiores

Transformaciones II

Crea un CSS para que la página web se visualice como en la imagen: la imagen con el texto alrededor, con un cierto margen de separación entre la imagen y el texto, y rotada

Transiciones

Crear una barra de menu con efectos utilizandos las transiciones

  • Los elementos del menú aparecen alineados horizontalmente
  • aspecto inicial:
    • Fondo de color gris
    • Espaciado entre el texto y el marco exterior de 5 px
    • Enlaces no subrayados, texto de color blanco con sombra gris, tamaño large y fuente "Futura, Arial, sans-serif"
    • Espaciado entre los vínculos de 20 px

Cuando se pasa el ratón por encima de un elemento de menú el comportamiento es el siguiente

  • Aparece un borde redondeado alrededor del menú de 10 px de radio
  • El color del texto cambia a negro y el color de fondo a blanco
  • Estos cambios se realizan con una transición que dura un segundo de tipo "ease-in-out"

Maquetación de contenidos con flexbox

A partir del siguiente código HTML vamos a generar una hoja de estilo que permita una maquetación de contenidos flexible

La barra de navegación la maquetaremos utilizando la flexbox de forma que ocupe todo el espacio de la pantalla, y se reduzca o aumente conforme modifiquemos el tamaño del navegador. Los elementos de la barra de navegación tendrán distinto aspecto cuando se pase el ratón sobre ellos y cuando estén activos

En la parte central tendremos un área con contenidos maquetados también con una flexbox de forma que haya elementos que ocupen el doble espacio que otros, cuando están en una misma línea. También haremos que las secciones ocupen más de una línea

Dentro de cada sección las imágenes estarán centradas, también los botones centrados y ocupando el tamaño completo de la sección

Formularios

Crear un formulario como el de la imagen. Añadir estilos modificar la apariencia de los elementos (colores de bordes, de fondo, de texto, bordes redondeados), para que se resalten los campos que sean obligatorios (borde de otro color, sombra), para que aparezcan textos de ayuda, etc.

Formularios: calcular el año de nacimiento

Vamos a realizar un formulario que nos permita convertir de calcular el año de nacimiento a partir de los años que cumples este año y a la inversa. El formulario tendrá el aspecto la imagen: cajas de entrada de texto de tipo numérico con bordes redondeados, con un texto de ayuda dentro de la caja y un botón para calcular. Cuando pulsas el botón de Calcular recoge el valor de las dos cajas y de aquella que tenga algún contenido realiza el cálculo correspondiente. Para que funcione correctamente podemos añadir el evento "onfocus" a las dos cajas y cuando se reciba el foco en cualquier de ellas se resetearán los contenidos que hubiera para que el usuario pueda escribir un nuevo valor

Vídeo en HTML5

Utilizar las funciones de HTML5 para integrar vídeo dentro de una página. Crear una página donde se inserte un mismo vídeo en diferentes formatos para que pueda ser visualizado en varias plataformas. El vídeo tendrá controles propios para su reproducción y cuando se finalice se reiniciará automáticamente de nuevo. Añadirle una imagen inicial que será la que aparezca cuando se cargue hasta que se inicie la reproducción

Vídeo con CSS

A continuación le añadiremos un estilo al vídeo. Para ello modificaremos la apariencia del vídeo creándole un marco con borde de algún color, esquinas redondeadas y con sombra (imagen 1). Además definiremos el aspecto de dicho marco cuando se sitúa el ratón sobre él (hover) poniéndoles una sombra de otro color

Vídeo con subtítulos

El formato .vtt nos permite crear subtítulos en un fichero de texto plano donde se pone una cabecera y a continuación se van añadiendo tramos de tiempo y el texto subtitulado que aparece

En HTML5 podemos añadir tracks de subtítulos a los vídeos. Crear un fichero de subtítulos propios para un vídeo y el código HTML5 para visualizarlo. Recordad que para que se visualicen los tracks es necesario subirlo a un servidor. Podéis utilizar alguno de los vídeos proporcionados para añadirle los subtítulos, o alguno propio

Audio con CSS

Insertar un audio en una página utilizando la etiqueta "audio" de HTML5. Definir el estilo de dicha etiqueta para que tenga una apariencia como en la imagen: un borde ancho, con estilo de borde "ridge", un color a elegir y un ancho del control de audio de 500 px

Controles de audio mediante el DOM

Crear una página web con cinco botones que permitan controlar la reproducción de un sonido

Los botones serán para: play, pausa, stop, aumentar volumen y disminuir volumen

Cuando se inicia la página el botón de play es el único activo. Cuando se pulsa el botón de play se activan los demás. Cuando se pulsa el botón stop se vuelven a desactivar todos excepto el play

Canvas básico. Líneas

Crear un canvas y dibujar algunas figuras básicas y texto en distintas posiciones tal y como se muestra en la imagen

Círculo centrado

Dibuja dentro de un canvas tres círculos concéntricos de diferentes colores, centrados en medio del canvas. Aplicad sombras a los objetos

Texto y coordenadas de ratón

Escribe el código HTML5 de una página que contiene una canvas con un color de borde rojo, esquinas redondeadas y grosor 2 px. Dentro de dicho canvas es posible pinchar con el ratón y se escribe un texto que nos dice las coordenadas donde hemos pulsado, ej: "Posicion 100 100". Dicho texto se dibujará con una fuente Arial, tamaño 20 px y alineación centrada. Para recoger las coordenadas de ratón tendrás que ponerle un parámetro de tipo "event" a la función que procese el click y recoger las coordenadas de ratón del objeto event

Círculos con interacción del ratón

Crea una aplicación que permite dibujar círculos de colores dentro del canvas. Las coordenadas del ratón al pulsar serán el centro del círculo y al soltar definirán el radio. Además, añade un elemento de formulario tipo "color" para seleccionar colores. El color elegido será el que se utilice para dibujar la siguiente figura. La línea externa del círculo siempre será de color negro

Escena básica de X3DOM

Partiendo de los ejemplos de las transparencias crear una  escena básica

Modificación dinámica del DOM

En este ejercicio, partiendo de la plantilla básica  realizada, vamos a añadir nodos a la escena X3D de forma dinámica. Para ello se  añadirán botones donde elegir dos o tres tipos distintos de figuras básicas y el color

Será necesario crear las funciones javascript que modifiquen la escena añadiendo la  figura con el color elegido en una determinada posición de la escena. Para ello habrá  que usar las funciones de acceso al DOM

Animaciones

Añadirle a una escena una animación

Plantilla básica de Three.js

Siguiendo la documentación de https://threejs.org/docs/index.html#manual/en/introduction/Creating-a-scene

Creación de una escena Three.js básica mediante las funciones init(), animate() y render()

Animaciones: La tierra girando

Hacemos la clásica animación de la tierra girando

Para realizar la escena se ha hecho lo siguente:

  • Crear una escena con una esfera aplicándole una textura
  • Definir una cierta velocidad de rotación y en que cada actualización de la escena modifica la posición en el eje Y

Animaciones con tween.js

Crear una interpolación sobre un objeto 3D cuando se pulse sobre él utilizando la librería tween.js

Elementos de la página, seleccionar y añadir elementos al DOM

Creación de un esqueleto básico de una aplicación d3.js

Dibujando con los datos

Dibujamos un diagrama de barras de diferente tamaño utilizando divs para ello

Utilización de SVG para dibujar figuras

Pintamos cículos en nuestra página con los datos cargados con d3

Utilización de SVG para dibujar figuras

Pintamos cuadrados en nuestra página con los datos cargados con d3

Actualización dinámica de los datos

Hasta ahora hemos utilizado datos que no se modifican dinámicamente. Vamos a cómo actualizar la visualización cuando los datos cambian.

A partir del ejemplo: ejemplo, realizamos las siguientes modificaciones:

  • Actualiza en enlace a la biblioteca d3.js en la cabecera a la última versión de d3
  • Crear un número de puntos aleatorio. Para ello crear una función javascript que llamaremos GenerarPuntos() a la que llamaremos donde sea necesario
  • Añadir un botón HTML que al ser pulsado vuelva a generar los puntos aleatorios
  • Una vez generados los puntos aleatorios por segunda vez se llamará a una función "update()" que actualizará los datos que se dibujan. Esto lo haremos sin la creación de puntos "enter" ni el "append" a la escena, ya que los objetos han sido creados y solo vamos a modificarlos

Ejes y escalas

Analizando el ejemplo: ejemplo

  1. El ejemplo está implementado con la versión v3 de la biblioteca. Hazlo funcionar con la versión 5
    • Actualiza en enlace a la biblioteca d3.js en la cabecera a la última versión de d3
    • d3.scale.linear() ahora es d3.scaleLinear()
    • d3.svg.axis().scale(xscale).orient("bottom").ticks(n) ahora es d3.axisBottom.scale(xscale).ticks(n). Igualmente el eje vertical será axisLeft
  2. Desplaza el eje Y a la derecha
  3. Modifica el tamaño de los círculos para que tengan un rango de radios más grande
  4. Añade una etiqueta de texto con las coordenadas de cada punto con el formato (x,y), color rojo y 10 px de tamaño de fuente
  5. Utiliza las escalas cromáticas (escala cromática) con los colores categorizados ya definidos en d3 para colorear los círculos por ejemplo con la escala "schemeAccent"
Web

Página Web

Página que muesta una página web con las funcionalidades requeridas:

  • Menú de navegación
  • Información de los autores del sitio
  • Elementos decorativos
  • Efectos usando transiciones y transformaciones
  • Fuente personalizada usando @font-face
  • Propiedades de textos
  • media queries para adaptar la página al dispositivo
  • Formulario de contacto
  • Zona de reproducción de vídeo
  • Zona de reproducción de audio
  • Geoposicionamiento
Ping pong

Ping pong

Juego del ping pong desarrollado en HTML5, CSS3 y JavaScript utilizando el canvas

Editor de escena 3D con X3DOM

Un editor básico de escenas 3D.

Para los gráficos 3D se usa X3DOM y mediante JavaScript y jQuery, se crean, modifican y se borran las fíguras dinámicamente.

Gráficos 3D sobre web con Three.js

Escena web en 3D en el que se interaccionará mediante Three.js

Características y dinámica de la escena:

  • Se mostrará una escena con un tablero en forma de cajón compuesto por una base plana y 4 paredes con volumen. Los diferentes elementos que componen el tablero tendrán textura y estarán agrupados en la escena bajo un mismo nodo grupo.
  • Sobre el tablero se irán lanzando desde el aire diferentes objetos: como mínimo podrán ser de tipo esfera, cilindro y cubo. Dichos objetos se lanzarán desde una cierta altura que será variable y con un color también variable. La configuración del tipo de objeto, color y altura se puede hacer desde un formulario o bien desde el código generando valores aleatorios. El lanzamiento del objeto podrá iniciarse bien desde un botón o desde una tecla de teclado.
  • Cuando lanzamos un objeto este cae desde la altura prefijada hasta chocar con el tablero, produciéndose en ese momento un efecto de rebote. El rebote se debe hacer utilizando la biblioteca "Tween.js" vista en el boletín de ejercicios de clase.

Visualización de datos con d3.js

En esta práctica vamos a utilizar la librería d3.js para visualización de datos.

Partiendo del ejemplo, realizamos las siguientes modificaciones.

En el fichero json:

  • Nodos que representan las personas de la familia con datos sobre su nombre, edad (actual o la que tenían al fallecer) y parentesco con el alumno como mínimo.
  • Conexiones entre nodos que vincule padres con hijos, parejas de un matrimonio y hermanos entre sí.

En la representación visual:

  • El tamaño de los círculos que representan los nodos dependerá de la edad.
  • El color dependerá del parentesco.
  • El grosor, tamaño y tipo de línea variará con la relación (matrimonios con líneas cortas y gruesas, hermanos con líneas discontinuas, padres-hijos con líneas continuas y más finas.
  • Aparecerá un texto con el nombre de la persona situado sobre el círculo.