“Taller de Videojuegos con HTML 5” Animación de objetos con HTML 5

Slides:



Advertisements
Presentaciones similares
Construcción de un juego con HTML 5 Rogelio Ferreira Escutia.
Advertisements

“Taller de Videojuegos con HTML 5” Rogelio Ferreira Escutia Tengo una idea!!!
“Problemas con la seguridad”
Tendencias de Construcción Web
Introducción a la Programación Multimedial
Redes Sociales Rogelio Ferreira Escutia.
“CSS - Texto” Rogelio Ferreira Escutia.
Android TV Rogelio Ferreira Escutia.
Rogelio Ferreira Escutia
“Android – Comunicaciones con HTTP”
“CSS - Colores” Rogelio Ferreira Escutia.
“Android – Geolocalización”
“Taller de Videojuegos con HTML 5” Dibujando en el Canvas del HTML 5
“Desarrollo de Aplicaciones para Ambientes Distribuidos”
“Flat Design” Rogelio Ferreira Escutia.
“Tecnologías para Construir el
“HTML – Estructura” Rogelio Ferreira Escutia.
Curso “Tecnologías Web” Rogelio Ferreira Escutia.
“Conceptos sobre IOS” Rogelio Ferreira Escutia.
“CSS - Estructura” Rogelio Ferreira Escutia.
“Análisis de la Situación Actual
“HTML – Imágenes” Rogelio Ferreira Escutia.
“Recomendaciones para el Arranque de Clases”
Rogelio Ferreira Escutia
“HTML – Manejo de Texto”
“Taller de Videojuegos con HTML 5” Manejo del Canvas en HTML 5
Sensores Rogelio Ferreira Escutia
“Instalación” Rogelio Ferreira Escutia.
“Raspberry Pi - Instalación” Rogelio Ferreira Escutia
“Taller de Videojuegos con HTML 5” Creación del Videojuego “Memoria”
“Arduino - Herramientas” Rogelio Ferreira Escutia
“Taller de Videojuegos con HTML 5”
Marketing - “Presencia Digital” Rogelio Ferreira Escutia
Rogelio Ferreira Escutia
“Conceptos de Internet de las Cosas” Rogelio Ferreira Escutia
“Arduino - Historia” Rogelio Ferreira Escutia
“Principios de telefonía: características,
“Raspberry Pi - RFID” Rogelio Ferreira Escutia
Almacenamiento con File I/O Ejemplo Rogelio Ferreira Escutia
Módulo de Especialidad en
“Proporción Áurea” Rogelio Ferreira Escutia.
“Creación del Hola Mundo”
“Concurso Nacional de Creatividad 2009”
“Tecnologías para construir el Internet de las Cosas”
Marketing - “Posicionamiento” Rogelio Ferreira Escutia
“Taller de Videojuegos con HTML 5”
“Herramientas” Rogelio Ferreira Escutia
Material para “Internet de las Cosas” Rogelio Ferreira Escutia
Proyecto Final “Plataforma OpenClass para Educación a Distancia”
“Proyectos de Big Data” Rogelio Ferreira Escutia
Conceptos sobre Sistemas Operativos Rogelio Ferreira Escutia
“Funcionamiento” Rogelio Ferreira Escutia.
“Tipos de Antenas” Rogelio Ferreira Escutia.
“Raspberry Pi - Herramientas” Rogelio Ferreira Escutia
“Lenguaje de Programación” Rogelio Ferreira Escutia
Múltiples Idiomas Rogelio Ferreira Escutia
Marketing - “Modelos de Negocio” Rogelio Ferreira Escutia
“Kit de 37 sensores” Rogelio Ferreira Escutia
MPI - “Programación” Rogelio Ferreira Escutia
Marketing - “Análisis de Sitios” Rogelio Ferreira Escutia
“Amazon Web Services - Conceptos”
TALLER JUEGOS EN HTML ENERO 2019.
“Multiplexado y demultiplexado de señales:
Rogelio Ferreira Escutia
“Creación de una calculadora”
“Android - Estructura”
“Android – Gráficos” Rogelio Ferreira Escutia.
“Raspberry Pi - Instalación” Rogelio Ferreira Escutia
“HTML” Rogelio Ferreira Escutia.
Preparándose para el Futuro
Transcripción de la presentación:

“Taller de Videojuegos con HTML 5” Animación de objetos con HTML 5 Rogelio Ferreira Escutia

Animación de una pelotita (estructura inicial) 2

Estructura La estructura de nuestro proyecto queda de la siguiente manera: animacion_pelotita.htm (arranque) pelotita.css (diseño) pelotita.js (funciones) 3

animacion_pelotita.htm <!DOCTYPE html> <html> <head> <title>Animación Pelotita</title> <meta charset="utf-8" /> <link rel="stylesheet" href="css/pelotita.css" /> <script language="javascript" src="js/pelotita.js"></script> </head> <body> <canvas id="miCanvas" width="500px" height="300px"> Tu navegador no soporta CANVAS </canvas> </body> </html> 4

pelotita.css /* pelotita.css */ #miCanvas { border: dotted 2px yellow; background: green; } 5

pelotita.js // // pelotita.js //Variables Globales var ctx; window.onload = arrancarCanvas; function arrancarCanvas(){ var canvas=document.getElementById('miCanvas'); if(canvas&&canvas.getContext){ ctx=canvas.getContext("2d"); if (ctx) { //Aquí va a ir el código JavaScript } else { alert("Error al crear el contexto"); } } 6

Mover Pelotita 7

Declarar Variables Globales (js) var ctx; var radio = 10; var bolax = 50; var bolay = 100; 8

Configurar Anchura y color (js) ctx.lineWidth = radio; ctx.fillStyle = "red"; 9

Función para mover la pelotita (js) function mueve(){ bolax+=4; ctx.beginPath(); ctx.arc(bolax,bolay, radio, 0, 2*Math.PI, true); ctx.fill(); } 10

y ejecutarla cada segundo (js) Llamar a la función y ejecutarla cada segundo (js) mueve(); setInterval(mueve,60); 11

Codigo completo (pelotita.js) var ctx; var radio = 10; var bolax = 50; var bolay = 100; window.onload = arrancarCanvas; function arrancarCanvas(){ var canvas=document.getElementById('miCanvas'); if(canvas&&canvas.getContext){ ctx=canvas.getContext("2d"); if (ctx) { ctx.lineWidth = radio; ctx.fillStyle = "red"; mueve(); setInterval(mueve,60); } else { alert("Error al crear el contexto"); } } function mueve(){ bolax+=4; ctx.beginPath(); ctx.arc(bolax,bolay, radio, 0, 2*Math.PI, true); ctx.fill(); 12

13

Pintar y Borrar Pelotita 14

Se agregan variables globales Para el canvas y el avance De la pelotita var ctx; var canvas; var radio = 10; var bolax = 100; var bolay = 100; var dx = 4; 15

Se modifica la función mueve para borrar todo el canvas y volver a pintar la pelotita function mueve(){ ctx.clearRect(0,0,canvas.width, canvas.height); bolax+=dx; ctx.beginPath(); ctx.arc(bolax,bolay, radio, 0, 2*Math.PI, true); ctx.fill(); } 16

17

Nuevo código completo (pelotita.js) var ctx; var canvas; var radio = 10; var bolax = 100; var bolay = 100; var dx = 4; window.onload = arrancarCanvas; function arrancarCanvas(){ canvas=document.getElementById('miCanvas'); if(canvas&&canvas.getContext){ ctx=canvas.getContext("2d"); if (ctx) { ctx.lineWidth = radio; ctx.fillStyle = "red"; mueve(); setInterval(mueve,60); } else { alert("Error al crear el contexto"); } } function mueve(){ ctx.clearRect(0,0,canvas.width, canvas.height); bolax+=dx; ctx.beginPath(); ctx.arc(bolax,bolay, radio, 0, 2*Math.PI, true); ctx.fill(); 18

Detección de colisiones 19

Se agregan nuevas variables globales para controlar los límites var ctx; var canvas; var radio = 10; var bolax = 100; var bolay = 100; var dx = 4; var ancho, largo; var limiteDerecha, limiteIzquierda; 20

Se inicializan los límites dentro de la Función arrancarCanvas ancho = canvas.width; alto = canvas.height; limiteDerecha = ancho - radio; limiteIzquierda = radio; 21

Se modifica la función mueve para que antes de pintar, verifique que la pelotita no salga de la pantalla function mueve(){ ctx.clearRect(0,0,canvas.width, canvas.height); verifica(); ctx.beginPath(); ctx.arc(bolax,bolay, radio, 0, 2*Math.PI, true); ctx.fill(); } 22

Se crea la función verifica, para revisar Si la pelotita abandona los límites, iniciar un incremento o decremento function verifica(){ var nbolax = bolax + dx; if(nbolax > limiteDerecha){ dx *= -1; nbolax = limiteDerecha; } if(nbolax < limiteIzquierda){ nbolax = limiteIzquierda; bolax = nbolax; 23

24

Detección de colisiones horizontales y verticales con movimientos horizontales y verticales 25

Se agregan nuevas variables globales para controlar los límites y deplazamientos horizontales y verticales var ctx; var canvas; var radio = 10; var bolax = 100; var bolay = 100; var dx = 4; var dy = 4; var ancho, largo; var limiteDerecha, limiteIzquierda, limiteArriba, limiteAbajo; 26

Se inicializan los tamaños y los límites de la pantalla ancho = canvas.width; alto = canvas.height; limiteDerecha = ancho - radio; limiteIzquierda = radio; //Calculamos los limites de arriba y abajo limiteArriba = radio; limiteAbajo = alto - radio; 27

Se modifica la función verifica function verifica(){ var nbolax = bolax + dx; var nbolay = bolay + dy; if(nbolax > limiteDerecha){ dx *= -1; nbolax = limiteDerecha; } if(nbolax < limiteIzquierda){ nbolax = limiteIzquierda; //Calculamos la nueva coordenada en Y if(nbolay > limiteAbajo){ dy *= -1; nbolay = limiteAbajo; if(nbolay < limiteArriba){ nbolay = limiteArriba; } bolax = nbolax; bolay = nbolay;} 28

29

Rogelio Ferreira Escutia Instituto Tecnológico de Morelia Departamento de Sistemas y Computación Correo: rogelio@itmorelia.edu.mx rogeplus@gmail.com Página Web: http://antares.itmorelia.edu.mx/~kaos/ http://www.xumarhu.net/ Twitter: http://twitter.com/rogeplus Facebook: http://www.facebook.com/groups/xumarhu.net/ 30