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í.
Etiquetas:
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 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.
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
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
Roger es fantástico el efecto.Gracias por estos ejemplos tan divertidos.
Mi serpiente me ha quedado un poco loca:
© 2024 Creado por roger. Tecnología de