-
En este punto te puedes dar cuenta de que has estado definiendo una función particular
-
cada vez que has querido animar tu programa, y es la función "draw".
-
Para que lo recuerdes aquí tenemos nuestro programa de carro animado
-
recuerda que tenemos nuestra variable "x" igual a 11
-
que es la posición inicial del carro
-
y en "var draw" está todo nuestro código de dibujo
-
y luego cambiamos "x" y sumamos 3 cada vez
-
y luego podemos reiniciar y correrlo: ¡Wooo! Zoomy Zoomy Zoomy
-
Ahora que has aprendido cómo hacer tus propias funciones,
-
tal vez te preguntes: "¿Qué pasa con esta función de dibujo?, ¿Es una función personalizada? ¿Por qué siempre la llamamos "draw"?
-
Bueno, todas son buenas preguntas.
-
Verás, en nuestro entorno aquí en Khan Academy, hay algunas funciones globales especiales,
-
que yo llamo "Funciones Mágicas" pero eso es sólo el nombre que yo les doy.
-
Básicamente cuando corremos tu programa lo observamos para descubrir si definiste funciones con nombre específicos,
-
como "draw", y si lo has hecho, las llamamos en determinadas ocasiones.
-
Por ejemplo, cuando defines la función "draw" en tu código,
-
entonces encontramos esa función y miramos el código que está dentro de ella
-
y llamamos ese código una y otra vez de la manera más rápida que podamos.
-
Si no defines una función "draw", no llamaremos a ninguna función porque no hay nada ahí.
-
Esto significa que si renombramos esta función como "drow"
-
ok, eso no funciona
-
O si la llamamos "drawCar", no funciona
-
Así que si renombramos la función, el programa ya no la encuentra porque no se llama "draw"
-
por lo que no se ejecuta ese código una y otra vez y el programa termina con nada.
-
Esto significa que no deberías nombrar a tu función personalizada como "draw" a menos que quieras que sea ejecutada de manera especial
-
y sea llamada una y otra vez.
-
Ahora, "draw" no es la única función mágica disponible
-
Hay muchas otras funciones que reaccionan a la interacción del ratón y a la pulsación de teclas.
-
Déjenme mostrar un ejemplo de otro programa de animación.
-
Digamos que queremos dibujar un círculo coloreado por donde el usuario mueva el ratón.
-
Entonces tenemos "draw" y luego "fill" y luego "ellipse" en "(mouseX, mouseY, 10, 10)"
-
Ok, vamos a probar. ¡Genial!
-
Tenemos esta maravillos cosa redonda coloreada pasando por ahí
-
Así que esta función, este código dentro de la función "draw" se estará llamando una y otra vez
-
Porque lo hemos puesto dentro de una función llamada "draw"
-
Así que se estará llamando incluso si el usuario no está moviendo el ratón. Se está llamando ahora mismo, aunque no estoy moviendo el ratón.
-
Como resultado hay una mejor manera de hacer esto, más eficiente
-
lo que podemos hacer es cambiar la función "draw" por la función "mouseMoved"
-
Nuestro entorno siempre revisa los programas para ver si tienen definida la función "mouseMoved"
-
Si la tienen, la llamarán siempre que el usuario mueva el ratón. Puedes verlo otra vez, sigue funcionando.
-
Pero, la función no es llamada si el usuario no mueve el ratón, tan pronto como el ratón se detiene la función deja de ser llamada.
-
Recuerda cuando teníamos la función "draw" el código era llamado una y otra vez, aunque el ratón no estuviera cambiando.
-
Ahora que estamos usando "mouseMoved" sólo llamamos el código cuando lo necesitamos, cuando el ratón realmente se mueve.
-
Nuestro programa es más eficiente. En general, si sólo quieres cambiar los resultados del programa cuando el usuario mueve el ratón
-
entonces es mejor usar la función "mouseMoved" en lugar de "draw".
-
Hay muchas otras funciones mágicas como "mouseMoved".
-
Está la función "mousePressed" y "mouseReleased" y "keyPressed" y puedes leer todo acerda de ellas en la documentación.
-
La clave a recordar es ésta: Si deseas usar las funciones mágicas debes escribirlas correctamente.
-
Si no las deseas usar, asegúrate de poner un nuevo nombre a tus funciones personalizadas.