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

Subo mi actividad. Tengo una duda Roger

 Entiendo que

Al poner esta parte final de código

_root.onEnterFrame = function () {
    _root.distancia("bola1","bola2") //Función con parámetros
}

 

Estamos diciendo que clip1 y clip2, las variables que declaramos en la función distancia, tomen el valor de bola1 y bola2 ¿es así?

 

Por otra parte veo que para declarar una función no es necesario declararla antes, sino que la podemos hacer en el mismo momento del comando on.Press.

Una última cosa. He tratado de conseguir la bola gris no varie su posición x y sólo pueda desplazarse por el eje "y",para ello añadí las coordenadas límite

this.startDrag (25,63.8,208.1,64)

 

pero al hacerlo con la bola verde y pretender que sólo se desplaze por el eje x, no lo consiguo

this.startDrag (344,170,345.2,525)

 

Un último problema. Si dejo de presionar el ratón fuera de la bola, la bola sigue moviéndose al ritmo del ratón ¿cómo evitar esto?

Subo el archivo swf y el fla

 

 

Archivos adjuntos

Hola Javier,

 

Las vriables clip1 y clip 2 son los nombres de los clips que pasan como parámetros en la función.

 

Respecto a las funciones hay que declararlas siempre antes de cualquier evento, no dentro de los eventos. Una cosa es declarar una función (crearla) y otra llamarla o ejecutarla. Esto último es lo que hemos hecho en el programa.

 

He estado investigando el tema de los límites de desplazamiento y he encontrado una solución aunque me quedan mis  dudas:

 

//Función para arrastrar la bola2

_root.bola2.onPress = function()

{ this.startDrag(true,62,344,169,344);};  // Si pongo el parámetro true funciona en el desplazamiento de x.

 

No me preguntes por qué en las y no hay que poner true ahora no lo sé.

 

Otra cuestión. Para hacer que la bola no siga arrastrándose cuando soltamos el boón fuera de ella tendremos que añadir este evento.


//Función para detener la bola2

_root.bola2.onReleaseOutside = function()  // suelta el botón cuando el puntero esta fuera de la bola

{ this.stopDrag();};

 

Bueno Javier espero haber sido de ayuda.

 

 

 



Javier de la Cruz dijo:

Subo mi actividad. Tengo una duda Roger

 Entiendo que

Al poner esta parte final de código

_root.onEnterFrame = function () {
    _root.distancia("bola1","bola2") //Función con parámetros
}

 

Estamos diciendo que clip1 y clip2, las variables que declaramos en la función distancia, tomen el valor de bola1 y bola2 ¿es así?

 

Por otra parte veo que para declarar una función no es necesario declararla antes, sino que la podemos hacer en el mismo momento del comando on.Press.

Una última cosa. He tratado de conseguir la bola gris no varie su posición x y sólo pueda desplazarse por el eje "y",para ello añadí las coordenadas límite

this.startDrag (25,63.8,208.1,64)

 

pero al hacerlo con la bola verde y pretender que sólo se desplaze por el eje x, no lo consiguo

this.startDrag (344,170,345.2,525)

 

Un último problema. Si dejo de presionar el ratón fuera de la bola, la bola sigue moviéndose al ritmo del ratón ¿cómo evitar esto?

Subo el archivo swf y el fla

 

 

 

Hola Alfredo,

 

A pesar de que no hay pistas de frío-calor el programa me ha gustado mucho. Primero porque es didáctico ya que el alumno debe seguir o buscar la ditancia cuando se va acortando. También me he dado cuenta que cada vez el fantasma cambia de lugar. Resulta divertido.

Por cierto la primera vez que que lo he hecho estaba tan concntrado que me he dado un susto de verdad.

Hola,

 

Os dejo el código de la función que permite evaluar los mensajes del juego frío/caliente:

Podemos observar el uso del operador lógico and para evaluar las distancias entre dos límites

 

//LLAMADA CONTINUA A LA FUNCIÓN DISTANCIA 

 

_root.onEnterFrame = function() {

_root.distancia("p1","p2") ;   // Función con parámeros.

 

if (_root.distancia_final<30)

{ _root.p2._visible = true; _root.mensaje = "FELICIDADES LO HAS ENCONTRADO";

}

 

if (_root.distancia_final>30 and _root.distancia_final<150) {
_root.mensaje = "TE QUEMAS";}

 

if (_root.distancia_final>150 and _root.distancia_final<250) {
_root.mensaje = "CALIENTE";}

 

if (_root.distancia_final>250 and _root.distancia_final<500) {
_root.mensaje = "FRÍO";}

if (_root.distancia_final>500 and _root.distancia_final<800) {
_root.mensaje = "HELADO";

}

 

};

 

 

 

 

 

 

Bueno, no sé qué tal me ha quedado, he tenido un problemilla con el sonido, a ver si sabéis decirme por qué.
Archivos adjuntos

Hola Nani,

 

Qué preciosidad !!!

 

No sé qué quieres decir con el problema de sonido ? A mi me suena perfectamente. Cómo has conseguido que cada vez salga en una posición diferente la mariquita ?

 

Me ha gustado muchísimo.

 

Emilia

Desgraciadamente, de mi cabeza no sale sacar el código como a vosotros. Cogí el código que  puso Alfredo y después modificó Juan Manuel y me salió eso. Son las mismas propiedades de Random que aprendimos tutoriales atrás.

Lo del sonido es que si te paras encima justo de la mariquita escondida, hace una cosa rara el sonido.

Hola Nani,

 

No te preocupes yo también utioizao vuestros códihos para avanzar. Pues no noto nada en el sonido. Lo siento.

Hasta pronto, Emilia

Nani, supongo que el ruido raro es porque aquí (más o menos) el sonido se reproduce tantas veces como le indica el "enterframe"( para los que os estáis iniciando  : tantas veces como la velocidad de fotogramas por segundo)

 

_root.onEnterFrame=function () {

      _root.distancia("p1", "p2")

         if (_root.distancia_final<50){  

                            _root.temperatura="TAS'QUEMAO";

                            _root.nombre._alpha=100;

                     AQUÍ HAS PUESTO QUE SE ACTIVE EL SONIDO;

 

        }

}

Un truco sería crear una variable (reproduciendo="no") y que cuando actives el sonido cambiar su valor a (reproduciendo="si")  Y para que se active el sonido al encontrarse las mariquitas que ves si se está reproduciendo o no...

 

 

_root.onEnterFrame=function () {

      _root.distancia("p1", "p2")

         if (_root.distancia_final<50){  

                            _root.temperatura="TAS'QUEMAO";

                            _root.nombre._alpha=100;

                                 if (reproduciendo="no") {

                                    QUE  SUENE

                                     reproduciendo="si"

                                   }

                               else 

                                if (reproduciendo="si") {

                                  QUE NO SUENE

 

                             }

 

      }

 

Puede que "meta la pata en algunos signos; pero para explicártelo bien tendría que tener el fla y probarlo ya antes... No tengo la facilidad de saber cómo se pone así en abstracto...

No lo he hecho así. Te mando el fla y lo miras. Le di mil vueltas hasta que conseguí eso.
Archivos adjuntos

Nani,

 

Pienso que has enviado el fla de Alfredo.

 

Emilia

Claro, es el mismo, pero tuneado.

RSS

© 2024   Creado por roger.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio