1.- INTRODUCCIÓN

 

Por la complejidad de las matemáticas en la programación y pensando que no todos los programadores en Flash tienen los conocimientos matemáticos necesarios para dominar todos los conceptos, creo adecuado introducir los conceptos básicos geométricos y trigonométricos siguientes:

 
1.- Coordenadas

2.- Puntos de inserción

3.- Uso de conceptos trigonométricos para representación y manipulación de elementos gráficos.

 

2..- DISTANCIA ENTRE DOS OBJETOS

 

En esta práctica, utilizando el teorema de Pitágoras. Podréis ver cómo podéis crear aplicaciones donde se necesite saber en cualquier momento la distancia entre dos clips de película. Muy importante para craer juegos. Recordemos el teorema de Pitágoras:

En todo triángulo rectángulo el cuadrado de la hipotenusa es igual a la suma de los cuadrados de los catetos.

Entonces la hipotenusa será igual a la raíz cuadrada de la suma de los catetos al cuadrado.

 


¿Cómo saber entonces la distancia a la que se encuentran dos clips de película? 

 

Pues muy fácil. Como se puede observar en la imagen anterior y teniendo en cuenta las coordendas x e y podremos hallar la hipotenusa que sería la distancia. 

 

Vamos a construir un programa que calcule la distancia dinámicamente al arrastrar una de las bolas.

 

Aqui os dejo el swf para ver como quedaría el programa:

 

Distancia entre dos objetos: tutorial25_1.swf

 

Cualquier concepto que no se entienda quedamos en este foro. Es importante entenderlo.

Podéis ir publicando ya esta práctica aquí.

 

 

 

 

 

 

 


Visitas: 8466

Respuestas a esta discusión

La pantalla inicial se selecciona cambiando de escena. En mi versión de flash se hace desde (t elo marco en la imagen). Gracias



Alfredo Rodrigálvarez dijo:

Javier dentro de mi escaso conocimiento he estado mirando tu aplicación y no encuentro la pantalla inicial donde se elige la dificultad y me imagino que ahí es donde se da valor a la variable _root.final.

Lo demás lo he estado mirando y en el campo de texto dinámico creo que con poner distancia_final en la variable es suficiente y no hace falta el _root. ni el nombre del campo, aunque funcione igual.

Siento no poder ayudarte, aunque si me gustaría saber donde está esa pantalla inicial.

Javier, esto se merece un videotutorial de los tuyos que tan bien haces.

Javier llevamos ya un montón de meses con este curso de flash y me acabo de enterar de lo de las distintas escenas.

Muchas gracias. Por cierto yo también tengo el Flash 8.

Es posible que en esto de las escenas radique el asunto de que la variable se llame de otra forma.

Acabo de leer por ahí que se usa _global. en lugar de _root.

Propongo que hagamos un círculo con los participantes de este grupo en Google Plus. ¿Quién se apunta?
Felicidades Amalia por tu buen trabajo. Te hace entrar en una dimensión misteriosa.

Amalia Casas dijo:

Gracias por vuestras fantásticas aportaciones, para el grupo 'slow' es una suerte disfrutar de vuestro trabajo y aprender de él.

Mi ejercicio:

3. CÁLCULO Y DETENCIÓN DEL ÁNGULO DE UN OBJETO RESPECTO DE UN PUNTO O UN OBJETO.

 

Flash incluye una función trigonométrica que nos permitirá determinar el ángulo de un vértice de un triángulo rectángulo o cualquier punto determinado que pueda formar un triángulo virtual entre el punto, la horizontal y la posición del otro objeto.

Cómo sabéis, en Flash, el eje de coordenadas se diferencia del cartesiano en el hecho que los valores de la coordenada Y se reducen al subir. Recordemos que en el escenrio el punto (0,0) esta en la parte izquierda superior.  Y la coordenada X se reduce al ir hacia la izquierda.

La función atan2()  que utilizaremos está más pensada para trabajar con las coordenadas del escenario de Flash para detectar los ángulos.

Esta función ha resuelto, también, el trabajo pesado para los matemáticos de controlar el sentido del giro en los ángulos, puesto que, en caso de giro en el sentido contrario de las agujas de un reloj, los ángulos se van sumando, pero sus funciones trigonométricas pueden adquirir valores negativos según el cuadrante donde finalicen. Atan2() elimina este problema haciendo mucho más fácil la tarea de programación, puesto que no tenemos que tener en cuenta el signo del giro ni el signo correspondiente de las coordenadas.

 

Vamos a crear un programa donde los ojos de un  búho siga los movimientos de un mosquito.


Primero debemos tener todos los ingredientes: la cara del búho con sus dos ojos (clips) y el mosquito (clip).

 

Una vez tenemos los objetos, vamos a crear un controlador de tiempo:

intervalo= setInterval(mueve_ojos,100); // repite cada 100 milisegundos la función mueve_ojos.

 

Creamos la función:

 

function mueve_ojos() {

// calculamos la distancia entre las coordenadas del ratón y los ojos del pájaro.

_root.disty = _root._ymouse-_root.ojo1._y;

_root. distx = _root._xmouse-_root.ojo1._x;

// Aplicamos la función atan2 para calcular en ángulo.

// como nos devuelve las unidades  en radianes lo multiplicamos por 180/(Math.PI) para

// convertirlo en grados.

_root.gir = Math.atan2(_root.disty, _root.distx)*180/(Math.PI);

// Ahora hacemos que el ojo 1  gire  los grados necesarios.

_root.ojo1._rotation = gir;

 

// Hacemos lo mismo con el ojo 2

_root.disty = _root._ymouse-_root.ojo2._y;

_root.distx = _root._xmouse-_root.ojo2._x;

_root. gir = Math.atan2(_root.disty,_root. distx)*180/(Math.PI);

_root.ojo2._rotation = gir;


// Hacemos que el mosquito esté siembre siguiendo al puntero de ratón.

_root.mosquito._x=_root._xmouse;

_root.mosquito._y=_root._ymouse;

}  // cerramos la función 

// Escondemos el puntero del ratón para convertirlo en mosquito.


Mouse.hide();

 

Observaciones:

Las variables  disty y  distx  nos servirán para almacenar el valor de la distancia entre los dos clips y, dependiendo de la posición de los clips, este valor puede ser positivo o negativo, pero, como ya se ha dicho, no os tenéis que preocupar, puesto que la función  atan2() nos libera de hacer las conversiones a valores absolutos de las distancias.


La función atan2  nos devuelve el ángulo en  radianes utilizando la distancia que hay entre los dos objetos (ojo y puntero de ratón). Pero como  la propiedad _rotation trabaja con grados, se tiene que convertir el ángulo que nos devuelve la función matemática de radianes a grados.

 

El mosquito es una imagen en formato gif animado que se ha importado en un clip.

 

Podéis crear una actividad parecida o diferente a esta o integrar esta función en otra ya creada.

 

Os dejo el resulatado

 

Archivos adjuntos
IM-PREZIONANTE!!!! Gracias, Roger por todo lo que nos enseñas.

Roger,

 

Qué pasada !!!

Ahora estoy un poquito espesa. Pero en unos días me pongo en marcha-

Muchas gracias, por este fantástico tutorial.

 

Hasta pronto, Emilia

 

 

Hola a tod@s,

 

Ahora ya lo he conseguido. Parecía más difícil de lo que realmente es.

 

Aquí tenéis a mi mosquito tigre.

 

Hasta pronto

Archivos adjuntos
Estupendo, Emilia, alumna lista.

Roger es fantástico el efecto.Gracias por estos ejemplos tan divertidos.

Mi serpiente me ha quedado un poco loca:

Archivos adjuntos
Wowwwwwwww, Amalia, estás hecha una profesional!!!!

RSS

© 2024   Creado por roger.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio