Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
El objeto de este manual es el de proporcionar los fundamentos necesarios para que puedas
vamos a abordar los conceptos básicos necesarios para el buen uso de esta tecnología y
Este tutorial no pretende ser una descripción exhaustiva de la aplicación Flash. Deseamos,
más bien, dejar sentadas las nociones que os ayudarán a tener las ideas claras a la hora de
plantear vuestro proyecto. Así que os dejamos a vosotros mismos la oportunidad de ver a
fondo todas las posibilidades que este programa ofrece, algo que podréis descubrir a medida
Aparte de este manual, los elementos que necesitáis para crear vuestras animaciones son
más bien pocos: La aplicación Flash, que puedes descargar en versión de prueba en el sitio
aprendizaje con otro tipo de servicios que pueden ayudaros en vuestra progresión:
Para finalizar, os rogamos que nos contactéis si encontráis algún tipo de errata en el manual
comentario por medio del enlace previsto a ese efecto al pie de cada capítulo.
Probablemente, uno de los avances más importantes en materia de diseño en el web ha sido
llevar a cabo animaciones de poco peso, es decir, que tardan poco tiempo en ser cargadas
por el navegador.
calidad de este tipo de gráficos no depende del zoom o del tipo de resolución con el
cual se esté mirando el gráfico. Por mucho que nos acerquemos, el gráfico no se
pixeliza, ya que el ordenador traza automáticamente las líneas para ese nivel de
acercamiento.
• Las imágenes en mapa de bits. Este tipo de gráficos se asemejan a una especie
cada píxel y es definida por las coordenadas y color de dicho píxel. Este tipo de
Así, Flash se sirve de las posibilidades que ofrece el trabajar con gráficos vectoriales,
medio de bibliotecas, para optimizar el tamaño de los archivos que contienen las
animaciones.
Esta optimización del espacio que ocupan las animaciones, combinada con la posibilidad de
denominada streaming), permite aportar elementos visuales que dan vida a una web sin que
para ello el tiempo de carga de la página se prolongue hasta límites insoportables por el
visitante.
interaccionar con el usuario. Para ello, Flash invoca un lenguaje de programación llamado
Action Script. Orientado a objetos, este lenguaje tiene claras influencias del Javascript y
permite, entre otras muchas cosas, gestionar el relleno de formularios, ejecutar distintas
partes de una animación en función de eventos producidos por el usuario, saltar a otras
páginas, etc.
De este modo, Macromedia pone a nuestra disposición una tecnología pensada para aportar
vistosidad a nuestra web al mismo tiempo que nos permite interaccionar con nuestro
Web pero, sin duda, se trata de la más popular y más completa de ellas.
Las animaciones Flash son producidas en una aplicación de diseño. Se puede descargar dicha
a hacer animaciones con este programa requiere por una parte un conocimiento del software
y por otra, una aplicación inteligente de los recursos que se nos ofrecen. En este manual
a poco la aplicación.
Para la redacción de este manual, nos hemos servido de Flash MX. Cabe esperar que lo dicho
para esta versión sea aplicable en gran medida a las versiones precedentes y las que salgan
en un futuro.
Nada más instalar y abrir la aplicación por primera vez, accederemos a una ventana de
ayuda.
• Modo desarrollador, enfocado a la creación de aplicaciones con formularios, botones
y otros componentes.
Este menú aparecerá únicamente la primera vez que abramos Flash, no obstante, podremos
Ya dentro del programa, tras haber cerrado algunos paneles con el objeto de disponer de
espacio de trabajo, haremos frente a una interface como la que se muestra en la figura:
• El escenario Se trata del espacio en el cual llevaremos a cabo todas las tareas de
haga falta.
• La línea de tiempo Esta sección es donde podremos organizar en el tiempo cada
La parte izquierda, donde podremos organizar las capas y la parte de la derecha que
que Flash pone a nuestra disposición. Como puede observarse, éstas son muy
parecidas a las que podemos encontrar en otros programás de edición grafica que ya
Como hemos dicho en el capítulo anterior, la línea de tiempo es donde podremos organizar la
sucesión de imágenes que dan lugar a una animación. En este capítulo introduciremos los
conceptos de capa y fotograma, vitales para una compresión del funcionamiento de Flash.
En cierta medida, Flash trabaja como si fuese una película. Una animación es una sucesión
de imágenes fijas que, al pasar rápidamente unas detrás de otras, dan la impresión de un
movimiento. Cada una de estas imágenes fijas es llamada también fotograma. Los
fotogramas son representados bajo forma de rectángulos en la parte derecha del escenario.
• Imágenes fijas Son las imágenes claves copiadas en los fotogramas siguientes al
permiten la transición gradual entre dos imágenes claves. Este tipo de imágenes muy
movimiento o transformación.
Por otra parte, una animación esta generalmente constituida de una variedad de objetos
Así, una animación Flash esta compuesta de una superposición de capas en cada una de las
cuales introduciremos un objeto que tendrá su propia línea de fotogramas. Estas capas nos
Por defecto, al comenzar una nueva escena encontraremos en nuestra línea de tiempo una
sola capa. Progresivamente iremos introduciendo más capas que nos permitan separar cada
Como esta es la primera vez que escribo sobre Clases y Objetos, veo que es necesario
Buscando un concepto lógico pedí por Google "Ferrater Mora concepto hombre" y es
apasionante leer como refuta cada definición: Ser racional, Homo sapiens, Homo faber,
Homo symbolicus, etc. Y al fin da su definición "El hombre es «un modo de ser su cuerpo»" y
la explica largamente.
http://www.ferratermora.com/lang_palabras_section.html
De todos modos doy por hecho que cualquiera sea la idea que ustedes tienen de el ser
humano, saben que es un concepto, una definición, una clase. Y que Juan Pérez, mi vecino y
María Duarte, su esposa son realidades, instancias de la clase. El objeto es la idea hecha
realidad.
Una clase se va ampliando en nuevas clases: La clase arquitecto es para nosotros la idea del
hombre, a la que sumamos la idea del que ha obtenido el título de arquitecto. Pero no deja
Para concretarse en realidad tiene que ser vivo y haber estudiado y obtenido su diploma
Está en la biblioteca como están en nuestra mente cualquier clase general como europeo,
Pero en cuanto a su naturaleza de clip de película solamente se diferencia de otro clip por su
Por ejemplo: Si quiero arrastrarlo con el ratón tendré que programarlo en su propio panel de
La palabra clave extends nos permite extender, ampliar una clase con otras ya definidas en
FLASH. Dentro de la clase métodos de MovieClipentre otras subclases están definidas la clase
startDrag y la clase stopDrag Y la palabra extends nos permite definir una nueva clase,
ampliando la clase MovieClip de modo que lleve dentro de sí, la capacidad de responder a las
archivo .fla
El nombre del archivo debe ser exactamente el mismo que la clase. Si es Arrastre.as, la clase
Se nos ocurrió el nombre Arrastre para esta sub clase, así que en el renglón 1 en la sintaxis
de Flash dice:
2 function Arrastre() {
3 onPress=Arrastrar;
4 onRelease=Soltar;
5 }
7 this.startDrag();
8 }
9 private function Soltar():Void{
10 this.stopDrag();
11 }
12 }
Esta clase se llama Arrastre y amplía la clase MovieClip. La palabra extends significa que si
bien se trata de una ampliación no estamos inventando nada nuevo, sino que estamos
Volvemos a la sintaxis de la línea 1 que abre la llave que se cierra en la línea 12.
class Arrastre extends MovieClip {
extends MovieClip aclara que es una subclase de la clase MovieClip y que por lo tanto hereda
todo lo que en ella está definido. Extends crea la relación de subordinación entre las dos
clases
A continuación hay que escribir una función que tenga el mismo nombre que la clase y que
Se trata de una subclase de MovieClip que atiende a las órdenes de Arrastrar y Soltar.
2 function Arrastre() {
3 onPress=Arrastrar;
4 onRelease=Soltar;
5 }
A la presión del mouse Arrastrar y cuando se levanta la presión Soltar Pero ahora hay que
7 this.startDrag();
8 }
Creamos una función privada para esta clase de clip que no retorna ningún valor. Por eso
Simplemente ordena para éste clip que se está presionando (this) la función ya definida
startDrag()
Y en las líneas 9,10 y 11 definimos la función para Soltar.
Ahora tenemos que hacer que el clip cipres que tenemos en biblioteca posea la clase Arrastre
Dentro de la biblioteca seleccionas el clip y pulsas Propiedades con el botón derecho del
Ahora trae al escenario unos cuantos ciprés grabas y corres el programa para probar si
puedes arrastrarlos.
En esta aplicación dibujo.fla participan de la clase arrastre cada una de las piezas que
Como ejercicio crea otro clip y luego en biblioteca le puedes agregar pulsando Propiedades
su participación en esta nueva clase que ya la has puesto como archivo Arrastre.as en tu
carpeta.
También hemos creado otra clase de este mismo tipo que nombramos Calesita
A ella pertenecen, el clip Flores que ves como pastito, el clip sauce y el clip VerNover que es
el texto de entrada.
Clip Calesita
La clase Clic se define con las funciones del sistema start Drag que usamos en la anterior y
nextFrame que nos interesa especialmente porque vamos a hacer MovieClips de varios
fotogramas.
La función Soltar es la misma que ya definimos en la clase Arrastre
function Calesita() {
onPress=Clic;
onRelease=Soltar;
this.nextFrame();
this.startDrag();
this.stopDrag();
clip VeroNover
El texto:
El primer texto mide 156 x 20 y por eso lo colocamos en -78 para x y en -10 para y.
El segundo texto, debajo y más o menos que su mitad coincida con la del primero. En el
segundo fotograma la acción es stop();y ponemos solamente el gráfico chico.
correspondiente.
Lo importante es que todos los fotogramas llevan la acción stop(); menos el último que debe
mandar al primero.
gotoAndStop(1);
necesidad de utilizarlos inteligentemente. Otro elemento de Flash que necesita una gestión lo
animación, o lo que es lo mismo, del tiempo que el usuario tarda en cargarla. Uno de los
Una biblioteca no es más que un almacén de objetos (gráficos o sonidos) que podrán ser
utilizados en una misma animación en una o más ocasiones. Dependiendo del rango que
presente esta biblioteca, ésta puede ser propia a la animación, compartida por varias
Cada uno de los elementos que constituyen una biblioteca son denominados símbolos.
Como hemos dicho, estos elementos podrán ser utilizados en nuestra animación cuantas
veces lo deseemos. No obstante, cada una de estas utilizaciones no es llamada símbolo, sino
ocurrencia.
Por lo tanto, una ocurrencia es cada una de las ocasiones en las que un símbolo
Como podemos observar, el uso de las bibliotecas no solo nos ayuda a aligerar el archivo,
sino que nos permite una creación, edición y borrado rápidos de cada una de las ocurrencias.
de una animación.
Después de haber introducido los conceptos básicos de Flash, vamos a poner en practica
Para empezar, comenzaremos por generar un documento en blanco por medio de:
un único fotograma representado por un rectángulo con un círculo. Este círculo significa que
con una trayectoria elíptica. Así pues, lo primero que debemos hacer es dibujar la esfera. Sin
embargo, para empezar con las buenas costumbres, no dibujaremos la esfera directamente
sobre nuestro fotograma vacío, sino que crearemos un símbolo en nuestra biblioteca.
Llegados a este punto veremos aparecer en la pantalla una ventana como la que veis en la
ilustración.
Para insertar el símbolo lo podemos hacer a partir del botón con una cruz situado en la parte
Una nueva ventana de dialogo aparece ante nuestros ojos (ver figura abajo). En ella
agranda y la barra superior del escenario nos muestra la palabra Esfera. Lo que ha pasado es
que hemos salido de nuestra animación para meternos en un espacio en el que podemos
editar el símbolo que queremos crear. Así que nos ponemos manos a la obra con nuestra
labor de artistas.
Para dibujar la esfera vamos a servirnos de las herramientas de dibujo. Comenzamos por
elegir la herramienta óvalo, representada por un círculo. Una vez elegida nos colocamos en
el escenario y, apretando la tecla mayúsculas y pulsando el botón izquierdo del ratón (el
único para los usuarios Mac), desplazamos el ratón hacia cualquier dirección. Veremos
herramientas.
Lo que haremos es seleccionar dos colores (los que os gusten) para cada una de las casitas
que se encuentran en la parte inferior de la barra de degradado. Para ello, clicaremos sobre
situada en la parte superior izquierda del panel. Repetiremos el proceso para la otra casita.
clicaremos con el botón izquierdo sobre la parte rellena del círculo. Si todo funciona
opciones que nos ofrece el panel mezclador de colores. Podemos ver que es posible añadir
más casitas para conseguir un efecto de coronas o bien cambiar el tipo de degradado a lineal
y más cosas...
Después de dejarnos llevar por nuestra vena creativa podemos volver a cosas más serias.
Para empezar, podemos alinear la esfera con la cruz que define el punto de alineamiento del
el ratón al mismo tiempo que mantenemos pulsado el botón izquierdo. Para mover la esfera
lo haremos del mismo modo, desplazando el ratón hasta el lugar apropiado manteniendo
pulsado el botón izquierdo. Podemos precisar el desplazamiento usando las flechas del cursor
Vale, ya hemos definido el símbolo en la biblioteca. Ahora vamos a empezar a trabajar con la
animación propiamente dicha. Lo primero que debemos de hacer es salir del espacio de
Ya dentro del escenario, vamos a incluir en el primer fotograma el símbolo que acabamos de
crear. Antes de nada, iremos a la ventana biblioteca (si la tenéis cerrada podéis abrirla con
Ventana > Biblioteca) y seleccionaremos el símbolo esfera. A continuación, pincharemos y
arrastraremos el símbolo hasta el escenario. El resultado debería ser algo como lo que se
Podemos observar que el círculo vacío del primer fotograma se ha convertido ahora en un
Pasemos ahora a estudiar el tipo de animación que vamos a hacer. Como hemos dicho,
dando la impresión de un círculo en perspectiva. Esta animación podría ser definida por tres
imágenes clave:
primera esfera.
Podemos ver cuales serian estas tres imágenes clave en el siguiente esquema:
De modo que ya disponemos de la primera imagen clave. Ahora, introduciremos la segunda
en el lugar aproximado que le correspondería. Para ello llevamos a cabo las siguientes
operaciones:
• Insertamos una imagen clave en la capa 1, más o menos sobre el fotograma 15.
Para ello nos situamos en la capa 1, en el fotograma 15. Pulsamos el botón derecho
del ratón y seleccionamos Insertar fotograma clave. Podemos observar como, una
presencia de otra imagen clave que será idéntica a la imagen de nuestro primer
fotograma..
arriba con la tecla del cursor o bien pinchando y arrastrando, como ya hemos visto
libre. Una vez hecho esto, seleccionaremos la opción escalar, que nos permitirá
y arrastrando en uno de los puntos de las esquinas de la marca que rodea la esfera.
momento en que la esfera esta a punto de completar el ciclo. Este fotograma debería en
ciclo, sino que esta de cera de conseguirlo. Realizaremos los siguientes pasos:
vacío)
• Volvemos al fotograma 1 y lo copiamos (Edición>copiar)
De modo que ya disponemos de las imágenes claves que definen la animación. Lo que
necesitamos ahora es definir una trayectoria elíptica que las una. Esta trayectoria ha de ser
definida en una capa especial llamada guía de movimiento. La guía de movimiento no es más
que una capa que contiene una línea sobre la cual podemos colocar nuestros objetos de
manera a que dicho objeto se mueva de una posición a otra respectando la trayectoria
tomásemos esta precaución, el objeto tendría dos posibles sentidos para llegar a una misma
Constatamos la aparición de una nueva capa llamada Guía: Capa 1 (ver figura).
• Seleccionamos el primer fotograma de esta nueva capa y dibujamos una elipse sin
esfera, pero esta vez no elegimos ningún color en la paleta de relleno (la ausencia de
color viene simbolizada por un cuadro blanco barrado en diagonal por una banda
semielipse.
• Nos colocamos en el fotograma 15 de esta misma capa y lo convertimos en un
Para ajustar las semielipses podemos por supuesto hacerlo a ojo pivotando entre el
fotograma 14 y el 15 hasta que las dos se solapen correctamente. Sin embargo, una
Esta opción, disponible en la línea de tiempo (ver figura), nos permite la visualización
de las semielipses y moverla por medio de los cursores hasta hacerla coincidir con la
Llegados a este punto, podemos comenzar a definir la primera media vuelta de la esfera.
Para generar el movimiento existente entre los fotogramas clave, hemos de crear lo que se
denomina una interpolación de movimiento. Como ya hemos dicho, eso es algo que Flash
Hecho esto, podremos constatar la aparición en la capa 1de una flecha entre el fotograma 1
intermedios, veremos que la imagen que contiene no es la misma que la de los fotogramas
clave 1 o 15, sino un intermedio de posición y tamaño entre ellas. Como puede verse, el
Para obligarlo a adoptar una trayectoria elíptica como la definida en la guía de movimiento,
tendremos que localizarnos en cada una de las imágenes clave (1, 15 y 29) y , usando la
herramienta flecha, colocaremos el centro del objeto sobre la línea de la elipse en cada una
Podemos comprobar que el objeto esta bien colocado en la trayectoria si al intentar moverlo
Llegados a este punto, ya solo nos queda ocultar la capa de la trayectoria. Esto puede
hacerse seleccionándola y pinchando sobre el punto que se encuentra bajo el ojo. El punto se
convierte en una cruz, que significa que la capa no es visible, aunque por supuesto sigue
existiendo.
Control>Probar escena
Veremos como hemos saltado a otra nueva ventana que nos muestra la escena creada, tal y
como la veríamos en realidad. Esta ventana nos ofrece múltiples posibilidades que ya
seleccionando:
Archivo>Previsualizacion de la publicación>HTML
Habiendo llegado a este punto, habréis descubierto algunas de las muchas posibilidades que
Flash ofrece para la creación de animaciones y, lo que es más importante, os habéis
Colocar películas Flash en nuestros archivos html, asp, php, etc; podría ser una de las
principales preguntas que hacemos, cuando empezamos a conocer este grandioso programa,
Antes debemos tener en cuenta que debemos seguir algunas reglas para que todo funcione
correctamente. Cuando creamos una película con Flash, este genera un archivo con
extensión ".fla", este nos permite crear la película y modificarla. Otro archivo que se genera
película, y nos ayuda a ver el resultado de las creaciones y modificaciones de los archivos
".fla".
nuestras películas y nos ayuda a tener una idea más clara de cómo se veran en la web.
click en "Código fuente", esto hace que se ejecute el "Bloc de notas", el cual nos
Eso es todo, pero recuerda que, de seguir este truco y si no editas la etiqueta <object>,
debes colocar los archivos .swf y .html en el mismo directorio del servidor o disco duro de tu
necesitarán.
Conseguir un código HTML para colocar una película Flash es sencillo. Basta con tener Flash
o Dreamweaver para que estos programas generen el código por nosotros. Pero a veces no
tenemos Flash en nuestro ordenador y sólo tenemos un archivo .swf que tenemos que
incrustar en una página web, entonces podemos crear nosotros mismos el código HTML para
ello.
En este artículo mostraremos el código HTML necesario para visualizar una película Flash,
procurando explicar algunas de sus etiquetas y atributos, para que quede claro lo que
estamos haciendo. Daremos un código de ejemplo que podremos incluir en HTML para
mostrar Flash.
Nota: Como decíamos, también podemos obtener el código HTML para incluir un Flash
utilizando el propio programa Flash. Lo explicamos en el artículo: Colocar películas Flash en
nuestras páginas
Veamos primero un posible código HTML para incrustar un Flash en una página.
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?
height="350">
</embed>
</object>
En el código HTML para insertar Flash tenemos aquí dos etiquetas básicas:
• <object> , que es propia de Internet Explorer, y que sirve para incluir cualquier tipo
páginas web. Del mismo modo que <object> , sirve para incrustar diversos tipos de
Dentro de las etiquetas se deben incluir varios parámetros para configurar el aspecto y
• classid: que indica el plugin o componente ActiveX que Internet Explorer tiene
algún sitio.
• width: con el ancho en píxels en los que se debe mostrar la película.
Luego anidada dentro de <object> hay que meter una nueva etiqueta, para indicar el archivo
En <embed> :
Con estas nociones básicas podremos crear nosotros mismos un código HTML para insertar
Flash, esto es, un HTML para incluir flash en una página web.
En este capítulo aprenderemos a crear botones y cómo enlazarlos con nuestros archivos o
Flash, nos permite crear botones personalizados, de manera muy rápida; a la vez nos ayuda
a darle mas vida a nuestras páginas web; en pocas palabras, nos ayuda a hacer más
atractivo nuestro sitio y lógicamente eso es lo que queremos para aumentar el número de
Por medio de lenguajes de programación (por ejemplo Javascript), también podríamos crear
botones, pero sería un poco más complicado; además no podríamos crear exactamente los
mismos efectos que podemos hacer con Flash.
Empecemos:
ALT+F8.
Automáticamente, seremos enviado desde la Escena 1 al escenario del símbolo "botón 1";
Mira hacia la línea del tiempo (Timeline), como puedes notarlo es diferente a la línea del
tiempo de la Escena 1.
La línea del tiempo, del escenario para crear botones es parecida a la siguiente imagen:
Debemos entender que Reposo, Sobre, Presionado y Zona activa son los cuatro estados de
Reposo: es cuando el mouse no está colocado sobre nuestro botón o no se ha hecho click
sobre él.
Sobre: es cuando el mouse está colocado sobre el botón, pero aún no se ha hecho click
sobre él.
La cabeza lectora, en la línea del tiempo tiene que estar señalando el estado de Reposo.
Panel de Herramientas.
6- Después presiona la tecla F6; ésto hará que la cabeza lectora en la línea del tiempo pase
al estado Sobre.
Como podrás notarlo, el botón se copia, así que no necesitarás hacer un nuevo dibujo.
que se encuentra en la sección colores del Panel de Herramientas, y escoge el color rojo,
8- Después presiona nuevamente la tecla F6, para que la cabeza lectora pase al estado
escoge un color verde. Finalmente presiona por ultima vez F6 para pasar al estado Zona
activa, ésto hará que se copie el botón. Para este último estado, no es realmente necesario
Con los colores que hemos aplicado, haremos que el botón cambie de color, cuando se lleven
Nuestro botón ha sido creado, así que puedes volver a la Escena 1, abre la biblioteca y verás
que ahí esta el símbolo llamado "botón 1", podrás arrastrarlo al escenario las veces que
Toma la Herramienta de Texto (A), y escribe lo que desees, después coloca el texto sobre el
botón creado; para probar la película haz la tradicional combinación de teclas CTRL + Enter.
Si creamos botones, lógicamente es por que queremos enlazarlos con otras páginas web en
nuestro servidor, o páginas web en otros servidores. Para este capítulo necesitaremos el
Para hacer los enlaces o links, debemos utilizar el panel de Acciones de Flash. Para poder
visualizar dicho panel, dirígete al menú principal y haz click en Ventana > Acciones.
Aparecerá la siguiente imagen:
ActionScript para controlar objetos en las películas de Flash con el fin de crear elementos
interactivos y de navegación, y para ampliar Flash con el fin de crear películas altamente
anterior. Mantén el botón seleccionado, si no lo está, haz click sobre él con la herramienta
flecha.
getURL es la acción que nos permitirá navegar entre páginas web, también permite pasar
http://www.desarrolloweb.com
4- Como habrás notado, al hacer doble click sobre getURL, arriba del cuadro que está a la
Si vas a hacer un enlace con una página web dentro de tu servidor tienes que escribir el
Si vas a hacer un enlace con una página web que no está dentro de tu servidor tienes que
Ventana: Éste es opcional (si quieres puedes dejarlo vacío). Especifica de qué forma será
Variables: POST y GET, especifica la manera en que se enviará la información etc, se usa
para formularios, así que en nuestro caso no son necesarias las variables; así que selecciona
No enviar.
Acciones es:
on (release) {
getURL("http://www.desarrolloweb.com", "_blank");
(si tienes problemas en seguir las instrucciones, simplemente copia el código anterior y
utilizada en los botones, que indica que la acción que aparece entre "{ }" se ejecutará
inmediatamente después de hacer click sobre el botón, o sea, al liberar el botón del mouse.
Por medio de botones hechos en Flash, podemos ejecutar nuestros programas de envío de
(Tus programas de envío de correos electrónicos tienen que estar configurados e instalados
correctamente)
1- Creamos un botón.
on (release) {
getURL("mailto:tu_e-mail@dominio.com");
Expliquemos lo anterior:
• on (release), es una acción utilizada únicamente para botones, e indica que la acción
ratón.
• getURL: Acción; carga un documento de una URL específica en una ventana o pasa
Prueba tu película (CTRL+Enter). Después puedes publicarla (en menú principal Archivo >
Publicar).
su forma física. Por ejemplo, podemos hacer que un círculo se transforme en un rectángulo.
Para realizar una interpolación de formas, tenemos que hacer uso de "Fotogramas clave
vacíos", ya que éste nos permite crear un vacío en la línea del tiempo, el cual nos permitirá
"Rectángulo"(Rectagle tool).
En la línea del tiempo, podrás observar que estamos haciendo uso del fotograma 1, de la
capa 1.
2- Haz click en el fotograma 4, después presiona la tecla F6, para crear fotogramas claves.
3- Después haz click en el fotograma 17 y presiona la tecla F7 para crear un fotograma clave
vacío.
Observa la línea del tiempo, y verás que la cabeza lectora está sobre un fotograma que no
abajo del escenario, escribe la palabra "WEB", después haz click en la "Herramienta Flecha",
con el texto seleccionado, haz la siguiente combinación de teclas: CTRL + B, dos veces.
La combinación de teclas CTRL + B, hará que el texto se separe, para que Flash interprete
cada letra como una imagen individual, de lo contrario Flash interpretará a la palabra "WEB"
Puedes ver que en la línea del tiempo de la capa 1, aparece el color verde junto con una
flecha que debe extenderse desde el fotograma 4 hasta el 17; es ahí exactamente donde se
En este párrafo aprenderemos a crear interpolaciones con objetos complejos como grupos y
símbolos.
elegimos el botón de opción "Grafica". Con el "type tool" escribimos HELLO. En el panel
Movemos el símbolo a la parte de arriba del escenario, más o menos al centro. En el panel
opción "Alpha", y damos un valor de 0%. Con esto conseguimos que el texto sea
a 100% para que sea opaco. Desplazamos el símbolo al fondo del escenario. Con el botón
"Free transform" alargamos el texto. Así hemos definido la situación inicial y final de la
interpolación. Hace falta crear los fotogramas intermedios. Hacemos click en la línea del
Retornamos al área del desarrollo para ajustar otro parámetro. En el panel de "Propiedades"
en la casilla "Ease" podemos ajustar la aceleración de la animación. Elegimos -100: así la
velocidad aumenta durante la animación. Probamos la película : Ctrl+Enter
Las Máscaras es un efecto utilizado frecuentemente en páginas web que contienen películas
Flash.
mostrarlos poco a poco, por algún objeto que tenga una interpolación de movimiento o
cualquier otro efecto que sea producto de tu imaginación. La máscara no es solamente para
ocultar objetos completamente, un ejemplo podría ser mostrar los objetos color gris y que un
objeto con interpolación de movimiento los muestre de otro color cuando pase sobre ellos.
1- En Flash, en la escena 1, toma la herramienta de texto (A) y escribe lo que desees, utiliza
un tamaño de fuente grande para que el texto abarque gran parte del escenario...
2- Dirígete al fotograma (frame) numero 60 de la "capa 1", haz un click sobre él, y presiona
F6, para que el tiempo de duración de la película sea más prolongado.
3- Crea otra capa (capa 2), después toma la "herramienta óvalo" y dibuja un óvalo:-)
4- Haz click derecho sobre el nombre de la "capa 2" y en el menú que se desplegará,
5- Ahora dirígete al fotograma número 1 de la "capa 2" (es donde está el óvalo), haz click
mueve el óvalo como tú quieras, eres un Flasher, así que debes tener mucha imaginación.
Nuestra línea del tiempo tendría que ser parecida a la siguiente imagen:
Ahora prueba la película
Para realizar este tipo de animación hemos de modificar manualmente los símbolos. Por
Ahora queremos que el movimiento sea fluido. ¿Cómo lo hacemos? Pulsamos el botón "Onion
skin" en la barra de estado de la línea de tiempo. Cogemos el borde izquierdo del "Onion
skin" y movemos hasta el primer fotograma. Esto nos permite ver los fotogramas anteriores,
Del menu File elegimos Import, y elegimos el archivo Pajaro.bmp. La imagen aparece en el
Todos los bitmaps insertados están en el panel Color Mixer (menu Window/ Color Mixer o
¿Cómo se hace?
Abrimos el panel de los colores (menu Window/ Color Mixer o Shift+F9). En el combo de
opciones elegimos Bitmap. En el cuadro debajo aparecen todos los bitmaps que podemos
En el Tool Box panel pulsamos Fill Transform y hacemos click dentro del rectángulo. Uno
de los pájaros queda seleccionado. Podemos cambiar su tamaño o girarlo pinchando con el
ratón en símbolo correspondiente. La totalidad de los pájaros que forman el relleno quedan
Modificar bitmap
El Flash no es una programa para retocar fotografias, y por eso no es tan fácil modificar las
imagen seleccionada queda marcada con puntos. A partir de este momento ya es posible
Por ejemplo seleccionamos el Lasso Tool y después el Magic Wand y hacemos click en
el fondo del imagen. Con esto conseguimos que sólo el fondo de la imágen quede
seleccionado (marcado con puntos). Ahora podemos cambiar el color, o editar cualquier
parámetro del fondo sin afectar a la imágen en primer plano. Podemos ver el resultado en la
siguiente imágen:
Cómo podemos ver en la imágen, la capacidad de seleccionar del Flash no es todo lo perfecta
que sería de desear. Aún así, puede ser útil en muchos casos.
Para probar esta facilidad, eliminamos la imagen que tenemos en el escenario y copiamos a
él, arrastrando desde la ventana de librería, la imágen del pájaro original. Como podéis ver,
la imagen en la librería está intacta y no se ha visto afectada por las modificaciones que
elegimos el menu: Modify/Trace Bitmap. En la ventana que aparece damos los siguientes
valores:
ColorTreshold: 50. Esto significa que si la diferencia entre los valores RGB de 2 pixeles es
Minimum Area: 5
• Seleccionamos con la flecha negra y elegimos el menú : Modify / Break Apart. Así
todavía no podemos animarla porque todas las letras están en el mismo nivel. Para
• Seleccinamos el fotograma 10. Vemos en el escenario las letras del texto "Ciao
bello". Distribuimos las letras por el el escenario, procurando ponerlas cerca del
borde.
• Ahora nos movemos a un fotograma intermedio entre el 1 y el 10, selecionando
Esto crea, en todos los fotogramas intermedios entre el 1 y el 10, las imágenes
necesarias para dar sensación de movimiento progresivo entre el texto legible que
Esta es lo que queríamos lograr: un texto donde todas las letras están animadas.
Hemos probado el Distribute to layers en un texto. Es posible usar este menú en todos los
Importar vídeo
- .avi
- Quick Time
- .mpeg
- Digital video
Es necesario que en el ordenador tenga instalado el Quick Time 4 o Director 7 (o versiones
posteriores).
Vamos a crear un símbolo, y dentro de este símbolo insertamos una secuencia de video.
Clip). Del menú File elegimos Import y elegimos calle.avi. Flash presenta una nueva
Flash comprime las secuencias de video con el codex 'Sorenson Spark' lo que
para reducir el tamaño del vídeo. La importación puede tardar varios minutos -
vídeo, Flash nos informa que este necesita por su reproducción total un numero de
Ahora vamos a ver cómo podemos aplicar las modificaciones de símbolos en la secuencia de
vídeo.
del 0%.
84 abrimos el panel Actions (menu Window / Actions o F9), y escribimos stop(). Así
Si algo echaré de menos el día que mis obligaciones no me permitan publicar, sin duda, será
que, aún siendo muy conocidas (como en este caso), en After-Hours por su entrega y
dedicación, además de otros por donde habitualmente suele moverse, por razones obvias, su
Me gustaría presentarles a dondiegote, moderador de los foros de AH, un amigo que según
reza en su web, se presenta de esta forma... “TRABAJO MUCHO Y DUERMO POCO. HASTA
Para que esta frase tenga sentido para todos vosotros, lo mejor es que veamos una de sus
últimas aportaciones.
que me parece muy buena, llama la atención sobre todo por su sencillez y por este sistema
de noticias. Es cierto que esta forma de presentación recuerda mucho, la verdad es que
Divide los elementos que va a usar en 2 grupos diferentes, títulos y textos. Tiene en el
La idea es crear 2 grandes MovieClips que contengan por un lado todos los títulos, y
enmascararlos dentro de su espacio, y por otro lado los textos y enmascararlos también.
Los datos los pone en 2 arrays diferentes, con la idea de poder recogerlos desde un xml o
txt. En el post completo hay un ejemplo de cómo añadirle un xml creado por kaax
El resto es relativamente sencillo y está explicado dentro del script. Usa un prototipo easing
para hacer los movimientos y quizás lo más llamativo es la forma de controlar y mandar
estos movimientos. Utiliza como referencia la noticia que se quiere mostrar, y recorre en dos
bucles diferentes las noticias de arriba y las de abajo, situándolas en función de la principal.
Como curiosidad podéis observar que en framemedia no coincide la noticia donde pinchas
con la que se ve, sino la anterior y en este caso, el ha visto más lógico hacerlo sobre la que
se ha picado.
Ahora lo importante, el fla:
http://www.thelirios.com/ah_news_framemedia/news_framemedia.zip
Y el código:
Stage.scaleMode = "noScale";
// Creo 2 arrays, uno con los títulos y otro con los textos.
News = new Array("noticia 1", "noticia 2", "noticia 3", "noticia 4", "noticia 5",
la noticia 3", "Titulo noticia 4\n\nEste es el texto de la noticia 4", "Titulo noticia
// lo uso sobre todo para _y pero le paso "prop" para usarlo en _scales
this.onEnterFrame = function() {
this[prop] = fin;
delete this.onEnterFrame;
// Creo un clip "mnu" que serán los botones con los títulos
this.createEmptyMovieClip("mnu", prof++);
// Lo situo donde su máscara. En la escena solo tengo 2 máscaras más el fondo, lo demás
lo attacheo
this.mnu._x = msk._x;
this.mnu._y = msk._y;
// lo enmascaro
this.mnu.setMask(msk);
this.createEmptyMovieClip("noticias", prof++);
// lo coloco
this.noticias._x = msk2._x;
this.noticias._y = msk2._y;
// lo enmascaro
this.noticias.setMask(msk2);
// TITULOS
// atacheo "new"
this.mnu["new"+n].txt.text = News[n].toUpperCase();
// en yFin almaceno el destino _y del clip y los demás se colocan en relación a los
yFines
msk._y - this.mnu["new"+n]._height};
// NOTICIAS
// attacheo "textos"
this.noticias["textos"+n].txt.text = Noticias[n];
// Defino yFin
this.noticias["textos"+n].yFin = this.noticias["textos"+(n-1)].yFin +
this.noticias["textos"+(n-1)]._height;
// Coloco el primero
// ACCIONES BOTONES
this.mnu["new"+n].rOver._alpha = 0;
this.mnu["new"+n].onRollOver = function() {
this.txt.textColor = 0xffffff;
this.rOver._yscale = 0;
this.rOver._alpha = 100;
this.txt.textColor = 0x333333;
this.rOver._yscale = 100;
this.rOver.easing("_alpha", 0, 15);
// onRelease
this.mnu["new"+n].onRelease = function() {
// Muevo el clip "noticias" entero, pero tomo como referencia el alto de un texto
(this._parent._parent.noticias.textos1._height*substring(this._name, 4));
// le mando a su sitio
ColocaTitulos(substring(this._name, 4));
function ColocaTitulos(actual) {
var actual = Number(actual); // transformo el String actual en número para operar con
él
noticias)
// Defino y coloco los botones por encima del clickado, tomandolo como referencia
for(n = (actual-1); n>=0; n--) {
// Defino y coloco el boton por debajo del clickado, tomando como referencia la
// Defino y coloco los botones por debajo del anterior, tomandolo como referencia
http://www.thelirios.com/ah_news_framemedia
Pequeña aplicación concreta en flash para realizar una muñeca de
recortables.
Por Susana Ríos Suanes
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
www.teacuerdas.com
y la usé en la siguiente muestra que quiero que la vean para tener una idea clara de lo que
pretendemos hacer.
En esta tiendita hay en FLASH un probador de ropa que es lo que haremos aquí.
1) Tener una idea clara de lo que queremos hacer. En este caso lo mejor es entrar a la
tiendita "Sol" y jugar un poco en vestir y desvestir distintas ropas y botas a la muñeca.
Verán que la acción siempre está en los botones que son las ropitas de la vidriera. En la
vidriera, clic sobre la ropita para vestir y el mismo clic para desvestir. Resumiendo el
2) Crear en nuestra computadora una carpeta nueva que podemos llamar probador.
3) Conseguir las imágenes necesarias. Como nuestro propósito es Flash y no el dominio del
tratamiento de imágenes, se las doy prontas. Pero cualquier cosa que quieran preguntar a
necesitan.
Con el botón derecho del ratón, hacen clic sobre cada imagen y "Guardar imagen como.."
Guardan en la Carpeta que crearon el fondo.png y los nueve futuros botoncitos b1.png,
b2.png,...b9.png
y los nueve futuros clips c1.png, c2.png,.... c3.png . Si cambian la extensión .png por .bmp o
.jpg las imágenes saldrán con el fondo celeste y no transparente como necesitamos.
Nuestra aplicación tendrá un solo frame(fotograma) y en la línea del tiempo dos capas.
En propiedades vemos que las dimensiones de esa imagen son 402 x 500. Si la imagen va a
formar parte de
otra página como en el caso de la "tiendita Sol" el escenario debe ser dimensionado 402 x
Y ajustadas las posiciones del fondo.png en el panel Propiedades. A cero tanto "x" como "y".
Grabamos el fla que también podemos llamar probador.fla y lo pueden probar con Control
Enter .
6) Importar a la biblioteca el resto de las imágenes (todos los botoncitos y clips), que por
de película con el nombre clip1. Ubicamos a boton1 en la vidriera y a clip1 en el lugar exacto
Clip1, va a estar ahí, pero no queremos que se vea. Para esto escribimos la acción en el
En el boton1 escribimos la acción para vestir y desvestir esa blusita azul que es clip1.
on(press){
if(clip1._visible==false){
}else{
El frame nombra a clip1, y boton1 nombra a clip1, en sus acciones, que no funcionarán si te
de Instancia.
9) Ahora grabas y pruebas y si todo funcionó como esperamos, repites la acción para cada
uno de los artículos de vidriera. Te llevará poco tiempo usando Edit, Copiar y Pegar,
ajustando correcciones para cada caso. Por supuesto que para saber el lugar exacto donde
va cada prenda, tendrás que sacar la anterior. Al final tendrás que ponerlas todas apiladas y
por eso les decía que deben apuntar las ubicaciones de cada clip.
10) Para que no te olvides de nada, comencemos con los botones. Ya transformaste a
Ahora hay que transformar a b2.png en el clip boton2 y ubicarlos en la vidriera. Copias la
acción de boton1 y la pegas como acción de boton2. Después corriges cambiando en lo que
Y así hasta que tengas los nueves botones, ubicados en vidriera y con la acción referida al
11)Los botones están prontos y en vidriera. Sigues con los clips que vestirán a Yolanda.
De cada c1.png, c2.png, etc. creas un clip de película con los nombres clip1, clip2, etc. y lo
ubicas vistiendo a Yolanda para apuntar la posición exacta en las coordenadas x, y, que
corresponden, y lo borras del escenario para que quede en la biblioteca y Yolanda quede en
malla para probarle el próximo clip y apuntar sus coordenadas. Por el momento nada más.
12) Crear la pila de los clip, cada uno según el apunte. Y OJO, NO TE OLVIDES DE PONER A
Te quedará así:
13) Completar la acción del frame para que haga invisible la pila entera:
2) Jugando, nos damos cuenta, que la línea de arriba está formada por variables, esperando
que el jugador les adjudique valores, que son las distintas letras que corresponden.
También el contador de ayudas es otra variable que se incrementará con cada ayuda que se
pida.
Ése es nuestro trabajo. Crear en tiempo de diseño las variables y buscar la forma de,
3) Comencemos con crear una Carpeta en nuestra computadora que se llame refran y un
La primera capa, se llamará fondo y tendrá solo gráficos para identificar las letras y las
Te quedará así:
Hacer estos gráficos lleva tiempo. Para lograrlos, primero hay que hacer el cuadrilátero de
fondo como símbolo gráfico, y también cada número. Después sobreponerlos atendiendo a
No hay nada que aprender aquí más que paciencia y dedicación y no creo que lo necesiten.
Con el botón derecho del ratón, hacen clic sobre cada imagen y "Guardar imagen como.."
Jugando, ya habrás descubierto, que el refrán es DE TAL PALO TAL ASTILLA y también el
En la línea de arriba los organizas distanciando las palabras con los números de cada letra.
En la línea de abajo simplemente los números en orden para que el usuario escriba las letras
y pulse el botón de entrada. Hecho esto, pones candado a la capa, grabas y pruebas.
4) Creamos la segunda capa. Aquí pondremos las variables y las acciones para manejarlas.
booleanas(verdadero, falso).
Comencemos con las de texto: Debemos crear una para cada letra.
variable. Como van a ser mostradas en texto dinámico, resolví que todas comenzarían con
Por ejemplo las variables donde la solución es A se llamarán dina, dina1, dina2, dina3, dina4.
Creas entonces para cada letra un texto dinámico, ajustando las medidas con 28 por ancho y
32 de altura.
Yo usé letra Verdana tamaño 31. Y en la casilla Var escribes el nombre de la variable.
Ubicas cada uno de estos textos en su lugar. Superpuestas las capas, se verán así:
5) Ahora necesitamos variables, que reciban lo tecleado por el jugador. Usamos Introducción
de Textos
Uno para cada número. El mismo tamaño y la misma letra. Para los nombres de las variables
de entrada hemos elegido que comiencen con var y terminen con la letra.
De modo que son: vard, vare, vart, vara, varl, varp, varo, vars, vart.
6) Los botones se encargarán de tomar los valores impuestos por los jugadores,
En la tabla siguiente copio primero los códigos de los botones para solo una letra.
Por ejemplo el botón 1 que asigna a la variable dind el valor impuesto en la variable vard.
En cambio los botones asignados a las letras que se repiten en el refrán deben asignar valor
a varias variables.
ayudas=0;
Y como deseamos ver en pantalla la marcha del contador, ponemos en pantalla un texto
dinámico y nombramos a la variable con el nombre ayudas para que refleje la actualización
del contador.
letra 5
on(press){
letra 9 letra 8 ayudas=ayudas+1;
on(press){ on(press){ varl="L";
ayudas=ayudas+1; ayudas=ayudas+1; dinl="L";
vari="I"; vars="S"; dinl1="L";
dini="I"; dins="S"; dinl2="L";
setProperty("ayudar9", setProperty("ayudar8", dinl3="L";
_visible, false); _visible, false); dinl4="L";
} } setProperty("ayudar5",
_visible, false);
}
9) No te olvides de guardar y probar a cada paso. Poner candado en esta capa y crear otra
para los textos.
Lo que pretendemos es mostrarles las herramientas más elementales que necesitan para
He creado una página bruja.html donde pongo las imágenes que necesites bajar y también
las direcciones para que cuando juegas te quede más fácil, con la flechita del navegador
1) Tener una idea clara de la salida que pretendemos. Para eso entra a la página.html y
pincha Juego completo. Juega varias veces, y trata de pensar cuantas herramientas están
involucradas, para hacer posible algo tan sencillo. Iremos paso a paso para cada
herramienta. Al grabar usaremos la palabra truco que no es lo mismo pero es más corta.
2) truco.fla . Abre en tu computadora una carpeta que se llame bruja, para grabar este
Si entras a la página bruja.html verás lo que haremos para este archivo: una capa con el
3) La Bruja. En la página html, hay seis imágenes de la bruja. Tu necesitas las cuatro últimas
(izquierda, arriba, derecha, abajo) y podrías hacer con ellas el clip de película de la bruja.
Pero no te lo aconsejo.
Si hicieras el clip, con esas cuatro imágenes, te ahorrarías trabajo pero el clip pesaría 11 kb.
En cambio te aconsejo que bajes solamente la imagen original que se llama Iz1, el trabajo
En la página html. Con el botón derecho haces clic sobre la imagen Iz1 -> Guardar Imagen
Archivo -> Importar a biblioteca -> buscas la Carpeta Bruja, seleccionas la imagen y pulsas
Abrir.
que mide 229 x 186 píxeles. La achicas a 130 x105. La conviertes en símbolo gráfico que
llamas brujita.
Ahora los cuatro gráficos que necesitamos deben ser instancias de brujita.
Si hasta ahora todo va bien graba este trabajo que llamamos truco.fla Y no te olvides de
grabar seguido.
En tu biblioteca tienes en este momento una imagen que se llama Iz1 y un gráfico que se
llama brujita.
->nombre izquierda
Traes brujita al escenario-> la seleccionas ->Modificar -> Transformar -> Rotar 90º en el
sentido de las agujas del reloj ->Modificar -> convertir en símbolo gráfico -> nombre arriba
Traes brujita al escenario-> la seleccionas ->Modificar -> Transformar -> Rotar 90º en el
sentido contrario a las agujas del reloj ->Modificar -> convertir en símbolo gráfico ->
nombre abajo
Si aparece este cuadro debes hacer clic en avanzado porque es el que necesitas
es la de clipbruja.
Necesitamos cuatro fotogramas clave, donde van a ir distintas imágenes, así que conviene
crear primero los cuatro y en la línea del tiempo, poner en cada fotograma la acción:
stop();
Para que los códigos que escribiremos en los botones coincidan con el ejemplo que tenemos
An 130 x -65
Al 105.6 y -52.8
El clip de película clipbruja está completo. Para afirmar y salir pulsas Escena1 y vuelves a la
clipbruja, en la línea del tiempo hay un solo fotograma sin ninguna acción.
Grabas, pulsas Control+Enter para probar y luego Control + tecla b para saber cuánto pesa
ese clip que por ahora está quieto en el escenario.
Vuelve a la página .html y mira de nuevo que nos falta para completar este primer paso que
Antes de seguir, mira la biblioteca (Control + L). Ahí tienes 7 elementos. Al pié de la
Haz clic allí y ponle el nombre Abruja. Es un método mío poner una A a todos los nombres de
carpeta en la biblioteca, porque como se ordenan alfabéticamente, consigo que queden todas
las Carpetas arriba sin mezclarse con las cosas nuevas que vamos agregando.
Después sin abrir la Carpeta pinchas cada elemento y lo arrastras hasta la Carpeta para
guardarlos allí. Con doble clic abres la Carpeta si lo necesitas, o del mismo modo la cierras.
4) El Fondo.
Deja limpio el escenario y por ahora olvídate de la bruja. En la página html, pulsando con el
botón derecho sobre el fondo, eliges Propiedades y te enteras que el nombre es cielo.jpg y
También tienes con la opción de Guardar imagen como, que traerla a la Carpeta donde estás
trabajando.
Ahora desde tu trabajo (la aplicación truco.fla ) traes desde la Carpeta a la Biblioteca la
imagen cielo.jpg Te recuerdo que debes usar Archivo-> Importar -> Importar a biblioteca ->
cielo.jpg
La imagen cielo está ahora en biblioteca. Antes de traerla al escenario debo darle a éste las
dimensiones 960 x 550 píxeles. Luego traes la imagen y le pones en el Panel de Propiedades
Eso es todo sobre la capa fondo. Le pones candado. Grabas, la pruebas y mides su peso.
5)Los botones. Creamos otra capa con el nombre bruja. Traes de la biblioteca clipbruja y la
Son muy sencillos. Basta un solo gráfico para sacarlos a todos. Dibujé con lápiz grosor 2
color negro y sin fondo un triángulo de 33 por base, con 52 de altura. Antes de transformarlo
a símbolo lo copié para que me quedaran cuatro triángulos vacíos. Con la herramienta Cubo
de pintura pinté los fondos. Uno con gris matizado, otro con amarillo, otro con rojo y otro
con negro. De a uno, los transformé en símbolos gráficos con los respectivos nombres de
Hacemos Insertar 'Nuevo símbolo, por nombre flecha, por tipo boton y ' Aceptar.
Aparece el cuadro con los cuatro fotogramas de un botón tipo. En el fotograma Reposo
En todos los casos cuidar que las coordenadas de los símbolos gráficos en el escenario sean
x -16.5 y -26
El botón flecha está pronto en biblioteca. Traen cuatro instancias de flecha al escenario y las
colocan apuntando a las cuatro direcciones. Lo hacen con la ayuda de Modificar y Rotar. No
necesitamos ponerles nombre en el Panel de Propiedades, porque nunca vamos a referirnos
a ellos. Cada uno tendrá su propia acción dependiendo de hacia donde apunte.
on(press){ on(press){
on(press){ on(press){
clipbruja.gotoA clipbruja.gotoA
clipbruja.gotoA clipbruja.gotoA
ndStop(3); ndStop(4);
ndStop(1); ndStop(2);
clipbruja._x = clipbruja._y =
clipbruja._x = clipbruja._y =
clipbruja._x + clipbruja._y +
clipbruja._x -20; clipbruja._y -20;
20; 20;
} }
} }
Todos se refieren a clipbruja. Si no escriben su nombre en el Panel de Propiedades no
funcionará.
truco.fla que es el primer paso está pronto. Graba, prueba y pesa. Sigue pesando 25Kb.
Recuerda que vamos a seguir agregando cosas. Debes crear la carpeta Aflecha y ahí guardar
Al finalizar truco.fla y archivarlo con ese nombre, también lo archivamos como truco2.fla
capa inferior tiene solo el fondo. La superior la bruja en el clip de película clipbruja
Para eliminar todo lo que se refiera a los botones, en la biblioteca, con el botón derecho
En la Capa bruja en el primer fotograma pones la acción para que puedas mover la bruja con
gotoAndPlay(1);
Archiva truco2.fla , pruébalo y mide su peso. Pesa lo mismo mover con botones que con
teclas.
Sin embargo si llevaras esto al Navegador, tendrías que agregar un texto, diciendo que para
activar las teclas, el usuario debe antes, hacer clic en el escenario de la película.
Aquí vamos a poner esa advertencia, que será necesaria solamente en el Navegador pero ya
nos ocuparemos, cuando el juego esté completo de que el usuario haga clic por alguna otra
razón antes de jugar, y ni se entere de que está activando las teclas flechas..
if (Key.isDown(Key.LEFT)){
clipbruja.gotoAndStop(1);
}else{
clipbruja._x=960;
if (Key.isDown(Key.UP)){
clipbruja.gotoAndStop(2);
}else{
clipbruja._y=550;
if (Key.isDown(Key.RIGHT)){
clipbruja.gotoAndStop(3);
}else{
clipbruja._x=0;
if (Key.isDown(Key.DOWN)){
clipbruja.gotoAndStop(4);
}else{
clipbruja._y=0;
}
Aclaración
Los códigos me parecen tan claros que no los explico por temor a aburrirlos. Pero contesto
por e-mail con mucho gusto cualquier pregunta sobre este trabajo.
Ponemos candado a las dos capas que ya tenemos, y creamos otra que llamaremos
Al final tendremos 10 invasores pero por ahora con uno alcanza para estudiar la acción de
Lo ubicamos por encima del escenario por ejemplo con la coordenada y = -20 y no
1 if(m1._y <540){
2 m1._y=m1._y+1;
3 }
5 m1._visible=false;
6 }
Tenemos dos if
La estructura de un if es:
Primer if renglones 1,2 y 3. Recordamos que el escenario nuestro es de 960 de ancho por
550 de altura. Pero no queremos que los invasores que no son disueltos por la bruja pasen
más allá de y= 550 y se nos pierdan de vista. Así que la orden es:
3 }
Segundo if, renglones 4,5 y 6. Teniendo en cuenta que clipbruja mide 130 x 105 tomamos su
medida más ancha. Esta medida hace las cosas muy fáciles para el usuario, pero hacerlo
cambios, pero ahora es importante que todo sea lo más simple posible.
De forma que, esté donde esté la bruja el lugar que ocupa es lo que está entre (su
6 }
Con esto, truco2.fla queda terminado. Archiven, prueben y pesen. Está pesando 26 Kb.
necesitan pulsar la película para que funcionen las teclas, pero en Internet hay que hacerlo.
Antes de irse graben también este mismo trabajo como truco3.fla para que nos quede de
respaldo truco2.fla, mientras seguimos complicando el juego. Después nos quedaremos con
Ahora estamos en truco3.fla pero queremos 10 invasores. Recuerda que para el clip invasor
que llamamos m1 dibujamos un círculo, y lo convertimos en un símbolo clip de película.
De la misma forma hacemos otros nueve clips, de distintos colores, que serán m2, m3, m4,
Mantén los candados en las capa fondo y brujas. Trabajamos en la capa invasores.
adelantara un píxel
En vez de repetir esto para cada nuevo invasor, vamos a crear una función que realice lo
mismo.
Arregla el código del fotograma para que figuren los condicionales dentro de una función así:
function invade(clip){
if(clip._y <540){
clip._y=clip._y+1;
clip._visible=false;
Nota que la función tiene un parámetro que figura entre paréntesis. El parámetro indica que
la función va a ser llamada con un argumento general que servirá como representante de
Con otras palabras (clip) es la palabra que después representará a m1, m2, etc.
Después de arreglar la función, la llamas para cada uno de los invasores, completando así el
invade(m1);
invade(m2);
invade(m3);
invade(m4);
invade(m5);
invade(m6);
invade(m7);
invade(m8);
invade(m9);
invade(m10);
Archivar, probar y pesar. Sigue pesando 26 kb.
Después de grabar este trabajo como truco3.fla, guárdalo como truco4.fla para continuar.
Y no olvides que en el Navegador, para activar las teclas flechas, debes hacer antes un clic
sobre la película.
truco4.fla Usamos la función getTimer() para que los invasores caigan a distintos tiempos.
¡No tiene gracia que los invasores caigan todos a la vez! ¡El juego resulta muy fácil!
Probando distintas cuentas, más por ensayo y error que por razonamiento logré dar con una
a = getTimer();
momento = a/100;
b = int(momento)
c=b/10;
está, pero se usa la fórmula para llamar a la función en distintos tiempos. La acción completa
del fotograma queda así: function invade(clip){
if(clip._y <540){
clip._y=clip._y+2;
clip._visible=false;
a = getTimer();
momento = a/100;
b = int(momento)
c=b/10;
if(c >1){invade(m1);}
if(c >3){invade(m10);}
if(c >5){invade(m3);}
if(c >7){invade(m8);}
if(c >9){invade(m5);}
if(c >11){invade(m9);}
if(c >13){invade(m2);}
if(c >15){invade(m6);}
if(c >17){invade(m7);}
if(c >19){invade(m4);}
Ahora otro arreglo más. Pones candado en las Capas fondo e invasores porque vamos a
Hasta aquí la bruja llegando a un extremo del escenario aparecía por el otro. Pero en el viaje
vertical eso no nos conviene más. Después de cierta altura, en medio del mar, la bruja ya no
Por eso debemos cambiar para las teclas UP y DOWN el número 540 por el nuevo que es 417
Y otra reforma en la Capa Invasores, así que candado en las otras y libre ésta.
function invade(clip){
if(clip._y <540){
clip._y=clip._y+1;
Cambia el número 1 por el número 2 así avanzará a pasos (píxeles) más largos.
truco5.fla Usamos la función getTimer() para que los invasores caigan a distintos tiempos.
Necesitábamos que el usuario hiciera clic en cualquier punto de la pantalla para activar las
teclas flechas.
Primero pones candado a todas las capas y creas una superior a todas que llamaremos texto
Yo usé letra Verdana, tamaño 14 color blanco. Recuerda que todas las capas están con
Seleccionamos el texto (son solo palabras sin fondo)y con Modificar' Convertir en símbolo '
Si en la biblioteca lo seleccionas, verás solamente la crucesita, porque las letras son blancas
Antes de traerlo al escenario, mira la capa fondo para asegurarte que la imagen cielo esté
Después de nuevo con candado en todas menos en la capa texto trae el botón activar a las
coordenadas x, y, a cero.
on(press){
activar._visible=false;
traduciendo dice:
Si el usuario pulsó el texto entonces comienza el juego. Esto es, comienza a correr el tiempo,
y la caída de invasores.
barridos
No ponemos nombre de instancia. Usé letra verdana, tamaño 16, color blanco
Cuando la variable c, resultado del tiempo desde que el juego comenzó, llega a valer 44 los
Por eso creamos un contador que cuente los invisibles, para tener los resultados y
function invade(clip){
if(clip._y <540){
clip._y=clip._y+2;
}
clip._visible=false;
if(activar._visible==false){
a = getTimer();
momento = a/100;
b = int(momento)
c=b/10;
if(c >1){invade(m1);}
if(c >3){invade(m10);}
if(c >5){invade(m3);}
if(c >7){invade(m8);}
if(c >9){invade(m5);}
if(c >11){invade(m9);}
if(c >13){invade(m2);}
if(c >15){invade(m6);}
if(c >17){invade(m7);}
if(c >19){invade(m4);}
if(c>44){
contador = 0;
if(m10._visible==false){contador = contador+1;}
Z = 10-contador;
barridos = "barridos "+ contador + ", invadieron mar y tierra " +Z;
}
Comentario final.
Traté de que el juego completo pesara lo menos posible. Pesa 31 KB. Hasta que pese 100
KB, puedes usar tu imaginación y hacerlo más interesante. Después ya habrá que buscar
otras herramientas, tratando de no llegar a tener que decir: Espere por favor que estamos
cargando.
Les debo esta aplicación porque cuando hice el juego de las brujas
me olvidé que FLASH tiene este método.
Por Susana Ríos Suanes
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
La Academia ha pedido que primero se repase las SEÑALES DE TRÁNSITO, luego las
SEÑALES DE ADVERTENCIA (viene curva cerrada, cruza tren, viene puente, etc.), después
encuentra con los carteles y experimentará (menos mal que en ficción) el peligro de no
Los símbolos los copié del Google y no te los paso porque saqué los de Uruguay, pero ví que
cada país tiene los suyos, a veces igual y otras veces, no.
Si haces esta aplicación puedes dejar los símbolos como imágenes tal como las traes o
simple, hice un cuadrado de 140 por 140 le puse un color azul fuerte (#003399) y lo
Necesitaba 14 cuadrados, porque de las 16 señales que tiene mi país me salteo la una (ceda
A cada instancia que pongo en el escenario, le bajo el alpha a 10 y por eso se ve gris oscuro.
Recuerda que si te olvidas de ponerle los nombres a cada clip en el Panel De Propiedades, el
if(t02.hitTest(azul2)){
azul2._alpha=80;
if(t03.hitTest(azul3)){
azul3._alpha=80;
if(t04.hitTest(azul4)){
azul4._alpha=80;
if(t05.hitTest(azul5)){
azul5._alpha=80;
if(t07.hitTest(azul7)){
azul7._alpha=80;
if(t08.hitTest(azul8)){
azul8._alpha=80;
if(t09.hitTest(azul9)){
azul9._alpha=80;
if(t10.hitTest(azul10)){
azul10._alpha=80;
if(t11.hitTest(azul11)){
azul11._alpha=80;
if(t12.hitTest(azul12)){
azul12._alpha=80;
if(t13.hitTest(azul13)){
azul13._alpha=80;
}
if(t14.hitTest(azul14)){
azul14._alpha=80;
if(t15.hitTest(azul15)){
azul15._alpha=80;
if(t16.hitTest(azul16)){
azul16._alpha=80;
Como ves por el script del frame 1, si el test de impacto (hitTest) detecta la colisión entre las
Las etiquetas
Como ves las etiquetas se arrastran sin ninguna programación, porque son clips a los que les
ActionScript
archivo .fla
El nombre del archivo debe ser exactamente el mismo que la clase. Si es Arrastre.as, la clase
Se nos ocurrió el nombre Arrastre para esta sub clase, así que en el renglón 1 en la sintaxis
de Flash dice:
1 class Arrastre extends MovieClip {
2 function Arrastre() {
3 onPress=Arrastrar;
4 onRelease=Soltar;
5 }
7 this.startDrag();
8 }
10 this.stopDrag();
11 }
12 }
Una vez que tienes el archivo Arrastre.as en la misma Carpeta donde guardas la aplicación
Para eso seleccionas en la biblioteca con el botón derecho, una por vez, cada clip etiqueta,
Arrastre.
Vamos a crear un scroll de texto de la forma más sencilla que hay. Ya será cosa vuestra
hacerlo estéticamente más llamativo o complicarlo más.
Abrimos una nueva película de Flash y vamos a usar una única capa. Con la herramienta de
texto Creamos un campo de texto del tamaño que queramos y le damos las siguientes
propiedades:
Estas propiedades son: Campo de texto tipo dinámico, multilínea para que el texto pueda
ocupar más de una línea, creamos la variable "MiTexto" que es donde, usando ActionScript,
meteremos el texto del scroll. En cuanto al tipo de fuente, tamaño y color, he puesto una
letra Arial, a 14 px y de color azul, vosotros poner lo que querais. Y por último tenemos
estos tres botones: El primero quiere decir que el texto podrá ser seleccionado
por el usuario, el segundo, que el texto leerá el formato HTML, es decir, podremos poner
Ahora vamos a crear 2 botones, para mover el texto hacia arriba y hacia abajo. Podeis crear
los botones como os apetezca, para este ejemplo, hemos usado unos de los que vienen en la
buttons>menu):
Como veis, el botón de abajo, está invertido; para los que esteis muy verdes en flash, os
diré que para darle la vuelta, aunque hay varias maneras, la más sencilla sería seleccionar el
Bien, la parte del diseño, (lo más sencillo posible), ya está terminada, ahora vamos a ver el
código que necesitamos. Empecemos por el código de los botones; seleccionamos el botón
de arriba, hacemos click derecho sobre él y le damos a "acciones", se nos abrirá el cuadro de
on (press) {
MiTexto.scroll -= 1;
on (press) {
MiTexto.scroll += 1;
Estos códigos, lo que le dicen a flash es que cuando se presione el botón, a MiTexto, que es
la variable que nos creamos para el texto anteriormente, en la propiedad scroll que ya viene
definida en ActionScript, le restamos (para subir), o le sumamos (para bajar), una unidad a
lo que ya teníamos.
Por último, nos queda meter el texto en el scroll, seleccionamos el primer y único fotograma
que tenemos, damos click derecho sobre él y nos vamos a 'acciones', y ponemos:
stop();
El código es muy simple, sencillamente, le ponemos de entrada un stop, por una razón, cada
vez que se lea este fotograma, se ejecutará este código, como solo debe ejecutarse una vez,
creamos al crear el campo de texto dinámico. Ojo con un error muy estupido que nos puede
dar algún dolor de cabeza si somos novatos; para cargar el texto, la estructura es la
siguiente: variable = "texto"; como veis, el texto va entre comillas, de modo que el texto
que pongamos no podrá tener nada entre comillas, es decir, esto: variable = "aquí va el
"texto" que quiero poner"; nos daría error. En este caso, por ser un texto tan corto se ve
facil, pero lo más lógico es que el texto lo copiaramos y pegaramos, tener en cuenta que no
puede haber comillas intercaladas. Y otra cosa que no puede haber son intros o saltos de
línea. Son las únicas cosas a tener en cuenta en este tipo de scroll.
Si lo deseas, puedes descargarte el archivo del ejemplo aquí.
Resultado
Abrimos una nueva película de Flash. Para empezar, vamos a crear dos capas, una que se
En la capa de "Formulario" creamos un nuevo fotograma clave vacio y otro más donde
Como veis, tenemos que poner un campo de texto de tipo "introducción de texto", que sea
línea única, con el formato de texto que deseemos (tipografía, color, tamaño, alineado,
etc...), y muy importante, darle un nombre de variable, en este caso, este campo será para
En la capa "Fondo" pondremos el fondo de cada campo, así que los campos de texto deben
ser transparentes, para ello, asegurate de que queda deseleccionado el botón a la izquierda
Añadimos tres campos de texto más, "E-mail", "Empresa", "Motivo del contacto", donde
haremos exactamente lo mismo, solo que dandole a las variables los siguientes nombres:
Ahora vamos a crear el campo de texto para el mensaje, este tiene las propiedades algo
distintas:
Las diferencias son dos basicamente, le hemos dado el nombre de instancia "eltexto", y ya
no es línea única sino multilinea, aparte de que la variable en este campo se llamará
"mensaje".
Lo de "eltexto" es para hacer el scroll de este campo, no voy a explicar como se hace el
scroll aquí ya que puse un tutorial sobre scroll de texto, lo encontraras aquí.
Con el scroll ya creado, tendremos esto:
Añadimos dos botones, uno el de enviar y otro el de borrar y un nuevo campo de texto
donde se mostrará el estado de envío del mensaje, es decir, dirá si el mensaje se ha enviado
mensaje de error.
formulario, para ello, en la capa "Fondo", en el segundo fotograma, dibujamos el fondo que
deseemos y que coincida en tamaño, forma y posición con los campos de texto. Para el caso,
on (release) {
revise el formulario.";
} else {
}
Aquí lo que estamos haciendo es comprobar que los campos obligatorios no estén vacios, si
alguno de ellos lo esta, en el campo de texto estado aparecerá el mensaje de error arriba
nom = "";
email = "";
empresa = "";
contacto = "";
mensaje = "";
respuesta = "";
Con lo que al apretar el botón borrar todos los campos de texto se borrarán :P
Ahora retomamos algo que dejé pendiente al comienzo; en el primer fotograma de la capa
nom=''
email=''
contacto=''
mensaje=''
Esto es para que los campos obligatorios estén vacios cuando se cargue la pelicula de flash.
¿Por qué?, Las variables que se crean se alojarán en un espacio que le asigne el sistema
operativo en la memoria ram, si no los inicializamos a "vacio", podrían tener 'basura' con lo
stop();
Con esto hemos terminado de crear el formulario en Flash, pero aun no funciona, nos queda
la parte de php.
Los puedes descargar de aquí. Los archivos libmail.php y formulario.csv no hay que tocarlos,
donde hay que hacer los cambios para adaptarlo a nuestro formulario es en el otro archivo,
ya en el propio archivo he puesto los comentarios, así que abrir php2excel_csv.php y allí lo
explico.
email como archivo adjunto, de modo que el email lo recibiremos como siempre, con el texto
escrito en el cuerpo del email, y además el mismo email en un fichero adjunto por si
queremos guardarlo en el disco duro. Los archivos *.csv son de Microsoft Excel, sin
embargo, si lo abrimos con dicho pograma, los caracteres raros como acentos y eñes no se
• Estos tres archivos han de estar en la misma carpeta en la que esté el formulario en
Flash.
• El archivo formulario.csv se escribirá cada vez que alguien envíe un correo, con lo
que en nuestro servidor, con la opción correspondiente del programa ftp que
El desarrollo del tutorial está realizado utilizando una base Access muy sencilla, pero el
ejemplo puede adecuarse a bases más potentes, como SQL Server, con muy pequeñas
modificaciones.
Supongamos que tenemos que tomar datos de una base que utiliza solo 3 tablas, con la
propone mostrar en su web realizada en Flash los datos de cada uno para que sus clientes
Se trata de una estructura jerárquica de datos que nos proponemos respetar cuando
Supongamos que la empresa carga los datos a través de un Panel de Cliente realizado en
algún lenguaje de programación del lado del servidor (ASP o PHP). Los datos de muestra son
los siguientes:
2. Volver a grabar esos datos en formato XML, que respetará la estructura jerárquica y
3. Realizar una película en Flash que lea los datos XML y los muestre a los visitantes.
Los primeros dos objetivos los realizaremos utilizando una página ASP (entorno Windows)
Antes que nada, nuestra página activa deberá conectarse a la base y realizar sobre ella las
consultas SQL que recojan los datos de forma ordenada dentro de los objeto Recordset.
Conn.Mode = adModeReadWrite
Conn.ConnectionString = ConnStr
Conn.Open
Una vez conectados a la base debemos realizar la primera consulta SQL, que recuperará la
lista de los datos ubicados más alto en la jerarquía, en nuestro caso las Areas Geográficas.
Debemos armar la consulta de tal modo de obtener únicamente aquellas áreas que tengan
algún país asociado. Si algún área no tuviera todavía países asociados la consulta lo
Si algún área posee más de un país asociado, lo que es lógico que ocurra, aparecerá varias
veces (tantas como países tenga) por lo que utilizamos el predicado DISTINCT para obtener
Dim strSQLAreas
strSQLAreas = "SELECT DISTINCT Areas.* FROM Areas INNER JOIN Paises ON Areas.IdArea =" &
_ "Paises.AreaPais"
FileSystemObject.
Para poder grabar deberemos disponer en el servidor de una carpeta que posea permiso de
• Dentro de lista tendremos tantos nodos area (hijos de lista) como áreas tengamos.
• Dentro de cada nodo area tendremos tantos nodos pais (hijos de cada area) como
Los nombres de cada Area, cada País y los datos de cada Representante (nombre, apellido,
etc.) los incluiremos como atributos de cada nodo bajo la forma de pares nombre = valor
<lista>
<area nombre="xx">
<pais nombre="yy">
</representante>
</representante>
</pais>
</area>
</lista>
Volviendo al código ASP, la lógica que seguiremos consiste en analizar para cada Area (bucle
Do While #1) qué Países hay, para cada País (bucle Do While #2) qué Representantes hay y
para cada Representante (bucle Do While #3) cuáles son sus datos.
Ya disponemos de las Areas (en el Recordset rsAreas que obtuvimos más arriba) por lo que
podemos armar los bucles y la escritura del XML de la manera que sigue:
archivo.WriteLine("<lista>")
If rsAreas.RecordCount = 0 Then
'***no hay Areas con países asociados => xml vacío /***
archivo.WriteLine("</lista>")
Else
rsAreas.MoveFirst
'buscamos los Países del Area que tengan Representantes, sin duplicados: DISTINCT
rsRepre("NombreRepres") &
' apellido='" & rsRepre("ApellidoRepres") & "' telefono='" & rsRepre("TelefonoRepres") &
archivo.WriteLine("</representante>")
rsRepre.MoveNext
Loop
rsRepre.Close
End If
archivo.WriteLine("</pais>")
rsPaises.MoveNext
Loop
rsPaises.Close
End If
archivo.WriteLine("</area>")
rsAreas.MoveNext
Loop
rsAreas.Close
archivo.WriteLine("</lista>")
archivo.Close
End If
En este punto tenemos una página ASP (representantes.asp) que cada vez que se ejecuta
toma los datos que existan en la base y los graba en un archivo con formato XML
(representantes.xml).
El archivo XML así generado puede verse en cualquier editor de textos aunque es mejor
utilizar algún editor XML como XML Editor o Notepad ++ (decarga gratuita).
cada vez que se realiza algún cambio en la base a través del panel que utiliza la empresa
para actualizar sus datos. De ese modo garantizaremos que siempre se leerán los datos más
recientes disponibles.
En la parte 2 de este artículo: "de XML a Flash", desarrollaremos una película Flash con la
base.
2º parte del artículos sobre Bases de datos y XML para Flash
utilizando ASP.
Por Fernando Campaña
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
En la primera parte de este articulo (Parte 1 - de Access a XML) desarrollamos una página
ASP que, luego de conectarse a una base de datos Access, recogía los datos
Esta jerarquía implicaba que los Representantes estaban divididos según su País de
Nota: no se muestran los datos, solo la arquitectura general del archivo para el utópico caso
de un Area con un solo País y dos Representantes.
Desarrollaremos el resto del trabajo dentro del Flash, desde donde cargaremos el contenido
del archivo XML en una serie de Arrays (o Matrices) que a su vez utilizaremos para mostrar
Para tratar de que la cosa sea un poco más clara comentaremos primero cuáles serán los
• Un Array de Areas Geográficas, cuyos elementos serán las Areas que se encuentren
en el XML. En el caso del ejemplo será: areas = ["América del Sur", "América Central
incluídos en esa Area. Por ejemplo: América del Sur = ["Argentina", "Brasil", "Chile",
"Uruguay"]
• Un Array por cada País, cuyos elementos serán los datos de cada uno de los
Reresentantes de ese País. Este Array es peculiar ya que sus elementos son en
Aires",nombre:"Alejandro",apellido:"González",…etc.} elem2 =
• Cargar los datos del XML dentro de un Objeto XML del Flash
Utilizaremos tres bucles for anidados (Areas, Países de cada Area y Representantes de cada
País). Debemos recordar que desconocemos de antemano el nombre que tomarán la mayoría
de los Arrays (dependerán de los datos contenidos en el XML), por lo que deberán declararse
System.useCodepage = true;
represXML.ignoreWhite = true;
represXML.load("../xml/representantes.xml");
// Cuando termina de cargar lo mandamos a organizar para poder mostrar los datos
represXML.onLoad = organizarXML;
stop();
function organizarXML() {
// Primer bucle para buscar Areas revisando todos los primeros nodos
// Agregar el nombre del Area (guardado como Atributo) al Array de Areas Geográficas
areas.push(represXML.firstChild.childNodes[yy].attributes.nombre);
// Segundo bucle para buscar el nombre de los Países (atributo) de cada Area
_root[represXML.firstChild.childNodes[yy].attributes.nombre].push( represXML.firstChild.
childNodes[yy].childNodes[aa].attributes.nombre);
// Utilizar el nombre de cada País (ejemplo: Argentina) para crear un nuevo Array
// donde se van a guardar los datos de los Representantes que pertenecen a ese país
_root[represXML.firstChild.childNodes[yy].childNodes[aa].attributes.nombre] = new
Array();
+) {
// Crear un Objeto para guardar los datos de cada Representante como si fueran
repre.ciudad =
represXML.firstChild.childNodes[yy].childNodes[aa].childNodes[bb].attributes.ciudad;
repre.nombre =
represXML.firstChild.childNodes[yy].childNodes[aa].childNodes[bb].attributes.nombre;
repre.apellido =
represXML.firstChild.childNodes[yy].childNodes[aa].childNodes[bb].attributes.apellido;
repre.telefono =
represXML.firstChild.childNodes[yy].childNodes[aa].childNodes[bb].attributes.telefono;
repre.email =
represXML.firstChild.childNodes[yy].childNodes[aa].childNodes[bb].attributes.email;
_root[represXML.firstChild.childNodes[yy].childNodes[aa].attributes.nombre].push(repre);
// Elimino el Objeto
delete repre;
// Mandamos los datos ya organizados a que se muestren (la función está más abajo)
mostrarDatos();
En este punto tenemos nuestros datos poblando una serie de Arrays y solo nos resta
mostrarlos ordenadamente.
Dado que disponemos de tres tipos de datos: Area, País y los datos del Representante,
agregaremos a la Biblioteca tres movieclips. Cada movieclip tendrá como contenido cajas de
tx_telefono y tx_email
que los exporte para ser utilizados en tiempo de ejecución. Esto lo realizamos indicando un
identificador para Linkage, que por comodidad establecemos igual al nombre del movieclip.
Para establecer el identificador se debe pulsar con el botón derecho del mouse sobre el
instancia, nivel).
De un modo similar a lo que hicimos antes, utilizaremos tres bucles for anidados para
instancia, nivel).
Como la lista resultará extensa (tendrá un desarrollo vertical mayor que el alto de la
película) crearemos otro movieclip vacío (denominado "mc_msk") y dentro dibujaremos con
restará hacer que "contenedor" se deslice hacia arriba y hacia abajo dentro de ciertos límites
function mostrarDatos() {
_root.createEmptyMovieClip("contenedor", 300);
_root.contenedor._x = 10;
_root.contenedor._y = 50;
// Construímos la lista
intContaPaises = 0;
intContaRepres = 0;
intPosicion = 0;
intSeparar = 50;
_root.contenedor["mc_areas"+aa]._x = 25;
_root.contenedor["mc_areas"+aa].tx_area = areas[aa];
intPosicion++;
_root.contenedor.attachMovie("mc_paises", "mc_paises"+intContaPaises,
100+intContaPaises);
_root.contenedor["mc_paises"+intContaPaises]._x = 45;
_root.contenedor["mc_paises"+intContaPaises].tx_pais = _root[areas[aa]][bb];
intPosicion++;
_root.contenedor.attachMovie("mc_repres", "mc_repres"+intContaRepres,
200+intContaRepres);
_root.contenedor["mc_repres"+intContaRepres]._x = 55;
_root.contenedor["mc_repres"+intContaRepres].tx_ciudad = _root[_root[areas[aa]][bb]]
[cc].ciudad;
_root.contenedor["mc_repres"+intContaRepres].tx_nom_ape = _root[_root[areas[aa]][bb]]
_root.contenedor["mc_repres"+intContaRepres].tx_telefono = _root[_root[areas[aa]][bb]]
[cc].telefono;
_root.contenedor["mc_repres"+intContaRepres].tx_email = _root[_root[areas[aa]][bb]]
[cc].email;
intPosicion++;
intContaRepres++;
}
intContaPaises++;
_root.createEmptyMovieClip("mc_msk", 301);
mc_msk._x = 10;
mc_msk._y = 50;
// Dibujamos el rectángulo (en este caso de 530px de ancho por 350px de alto)
máscara.
with (mc_msk) {
beginFill(0xff0000,50);
lineStyle(1,0x00ff00,100);
lineTo(530,0);
lineTo(530,350);
lineTo(0,350);
lineTo(0,0);
endFill();
_root.contenedor.setMask(mc_msk);
Como último detalle ponemos el código de los botones que manejan el scroll de
"contenedor":
Botón Subir:
on (release) {
_root.contenedor._y += _root.intSeparar;
Botón Bajar:
on (release) {
_root.contenedor._y -= _root.intSeparar;
}
Al ejecutar la película terminada se obtendrá un resultado similar al de la siguiente imagen,
medio impreso sin importarnos como está maquetado el contenido visible en pantalla.
Si a esta ventaja le añadimos que la impresión se basa en gráficos vectoriales por defecto,
nos encontramos con que la funcionalidad de imprimir desde Flash se trata de un gran
invento. Gracias a los vectores conseguimos que la calidad de impresión sólo esté limitada
Como hacerlo
En ActionScript 1.0 tenemos a nuestra disposición el método print (soportado desde Flash
Player 4) que es el motor de este ejemplo. Su funcionamiento es muy sencillo, ya que sólo
puede recibir dos parámetros. El primero es la instancia de clip de película que se imprimirá
y el segundo es el recuadro de delimitación, que nos indica el método para generar el área
imprimible.
El recuadro de delimitación puede recibir 3 valores:
• bmovie. El área de impresión de define en relación a un frame, que fijamos con una
por el área que contiene todos los elementos que hay que el fotograma con etiqueta
fotograma.
• bframe. Cada página toma como área de impresión aquella que contiene todos sus
elementos. Esta opción puede implicar cambios de escala entre distintas páginas.
Para definir que fotogramas del clip elegido vamos a imprimir los etiquetamos con #p, esta
operación es necesaria para los tres posibles valores del recuadro de delimitación.
Ahora que ya sabemos como funciona el método print vamos a ver como está hecho el
ejemplo.
En la capa impresion tenemos el clip con nombre instancia imprimible_mc que vamos a
utilizar como soporte de impresión, está a la derecha, fuera del stage. Está colocado aquí
porque no nos interesa que se vea, sólo lo queremos con propósitos de impresión. Por si
on (release) {
print("imprimible_mc", "bmovie");
}
Ahora vamos a lo importante, seleccionamos el clip imprimible_mc para editarlo. En su
En la capa etiquetas vemos que los 3 primeros fotogramas tienen una etiqueta #p y el
cuarto y último una #b. Esto nos dice los tres primeros se imprimirán y que el cuarto nos
Fijaos en el contenido de los fotogramas 1-3 y vereís que sólo cambia lo que hay en la capa
textos. El resto de capas tienen elementos comunes como los titulos, el marco o el pie de
página.
En la capa area imprimible, tenemos en el cuatro fotograma (el de la #b) un rectángulo con
el tamaño y proporciones correctas para imprimir en un A4, que será el tipo de papel que
Podemos añadir tantos fotogramas con #p como páginas queramos imprimir. Cuando
genereís el swf se mostrará una advertencia de rótulo #p duplicado que teneís que pasar por
alto.
printAsBitmap que se utiliza igual, pero genera la impresión como bitmap y no como
vectores, lo que implica la impresión será 72ppp de resolución. En ActionScript 1.0 también
están disponibles los métodos printNum y printAsBitmapNum, que nos permiten imprimir un
páginas a imprimir no se puede cambiar en tiempo de ejecución. Para ello tenemos la clase
printJob de ActionScript 2.0 que dota de mayor control a la capacidad de imprimir de Flash,
estamos preparando un tutorial sobre su uso. Lo que sí podemos hacer es mostrar contenido
Como hacerlo
Para utilizar este método vamos a usar los mismos parámetros que en las propiedades de
color avanzadas, así que si queremos saber los valores que vamos a necesitar para obtener
un determinado color, solo tenemos que conseguir ese color directamente en el panel y
apuntar los valores. En todo caso es muy útil para hacernos una idea del funcionamiento de
este método.
En este ejemplo, haremos que la foto vaya adoptando las propiedades de color de los
pequeños clips que hay a su lado. Haz click sobre ellos para iniciar el cambio.
myColor.setTransform(myColorTransform);
Sólo hay que sustituir los valores de ra, rb, ga, gb, ba, bb, aa y ab por los que queramos.
Los valores introducidos en este ejemplo son los que tiene un clip por defecto (100% de
Por si lo queréis también, este es el código del ejemplo. Todo el código está en el primer
fotograma:
//Creamos el Array con los valores iniciales de las propiedades de color de la foto
//es decir los que tiene cualquier clip cuando no lo hemos modificado.
//llamémosles "valores actuales".
valores=new Array(100,0,100,0,100,0,100,0);
function cambiarColor(ra,rb,ga,gb,ba,bb,aa,ab){
//cambio es un Array donde se definen los nuevos valores que queremos dar al clip.
cambio=new Array(ra,rb,ga,gb,ba,bb,aa,ab);
delete foto.onEnterFrame;
foto.onEnterFrame = function() {
this.myColor.setTransform(this.myColorTransform);
//aquí hacemos un bucle, que repasa todos los valores y los compara con los valores
if (valores[contador]<cambio[contador]){
valores[contador]++;
}else if (valores[contador]>cambio[contador]){
valores[contador]--;
//si los valores actuales son iguales que los de destino, para el enterFrame.
if (valores.toString()==cambio.toString()){
delete this.onEnterFrame;
//este bucle escribe los valores actuales en las cajas de texto para que los veáis.
_root["valor"+contador]=valores[contador];
};
}
//Aquí asignamos las acciones a los botones. Se trata simplemente de llamar a la función
verde_btn.onRelease=function(){
cambiarColor(88,-143,100,86,32,61,100,0);
amarillo_btn.onRelease=function(){
cambiarColor(0,239,-60,229,96,-11,100,0);
negativo_btn.onRelease=function(){
cambiarColor(-100,255,-100,255,-100,255,100,0);
azul_btn.onRelease=function(){
cambiarColor(43,-31,43,76,43,198,100,0);
En este tutorial vamos a aprender a realizar un reproductor MP3 con Flash, con su lista de
del ejemplo.
COMO HACERLO.
Vamos a depositar los archivos MP3 en un directorio en la raiz del servidor web llamado
mp3. Si disponemos de la capacidad para ejecutar alguna tecnología de servidor como ASP o
PHP, crearemos dinámicamente un archivo XML con los nombres de los archivos MP3. Si no
tenemos ninguna de estas tecnologías a nuestro alcance lo mejor es crear el archivo XML
manualmente y depositarlo en el servidor. En cualquier caso, el XML que suministra los datos
<exploracion carpeta='mp3'>
<archivo </exploracion>
En nuestro ejemplo empleamos ASP, para ello nos basamos en el tutorial Como leer los
archivos que hay en una carpeta del servidor con ASP y pasarlo a Flash.
de los archivos MP3, le ponemos como nombre de instancia controlador. Con el componente
Inspector de componentes. Una vez abierto, asignamos los parámetros como se muestra en
la figura.
Después posicionamos en el stage un componente del tipo lista y le ponemos como nombre
de instancia temas_list.
Los otros dos componentes que nos quedan son dos del tipo Label, que nos van a indicar el
título de la canción que se está reproduciendo y el número de temas en la lista. Sus
componente lista.
// ajustes iniciales
System.useCodepage = true;
XML.prototype.ignoreWhite = true;
_global.style.setStyle("fontSize", 10);
lista_xml.onLoad = cargarLista;
// en el componente lista
function cargarLista():Void {
array_temp = this.firstChild.childNodes;
if (!isNaN(array_temp.length)) {
// numero de temas
// relleno la lista
temas_list.addItem(array_temp[k].attributes.nombre);
cargarMP3(0);
// componente mediaplayback
function cargarMP3(indice:Number):Void {
controlador.setMedia("/mp3/"+array_temp[indice].attributes.nombre, "MP3");
controlador.play(0);
listenerObject.complete = function(eventObj:Object) {
_root.tema_actual++;
if (_root.tema_actual>=array_temp.length) {
_root.tema_actual = 0;
cargarMP3(_root.tema_actual);
};
controlador.addEventListener("complete", listenerObject);
lista_xml.load("/asp/verLista.asp");
// lista_xml.load("miLista.xml");
on (change) {
_root.cargarMP3(this.selectedIndex);
Podéis descargaros este mismo ejemplo y ver cómo funciona: mp3player.zip, contiene todos
los archivos necesarios para ejecutarlo en un servidor ASP excepto los propios MP3, que
Uno de los dilemas que se le presentan a un diseñador web cuando comienza un proyecto en
en base a esas dimensiones, el problema suele surgir cuando se visualiza el swf en pantallas
ejemplo, y cuando el cliente ve los primeros pantallazos con una resolución de 1024 x 768 o
incluso de 1280 x 1024 px. (cada vez más frecuente debido al boom de los TFT de 17'') se
queja porque considera que hay un área importante de la pantalla sin utilizar. Llegados a
claros en la composición, le decimos que técnicamene es la única opción, bla, bla, bla.
habrá un tamaño mínimo). Si no sabeis como hacerlo, en este tutorial os explicamos nuestra
COMO HACERLO.
Aunque queremos que los contenidos de la película se adapten al tamaño de la ventana del
resoluciones mayores. En nuestro ejemplo vamos a trabajar con una película de 600 x
detecte un cambio en el área disponible para mostrar la peli, es decir, diseñamos la peli
pensando en como se debe reajustar para diferentes tamaños. Todos los elementos
ajustables tienen que ser del tipo movieclip y deben tener su origen en su esquina superior
Tenemos que incluir el swf en el html con unas dimensiones de 100% de ancho y 100% de
alto, además de indicarle en la línea de tiempo principal que no quiero que se reescale, pero
Stage.scaleMode = "noScale";
Stage.align = "TL";
haciendo lo propio con el tamaño del Stage. Todo el mecanismo del tutorial se basa en este
ancho_minimo = 600;
alto_minimo = 400;
Para almacenar los clips que se tienen que ajustar (que serán todos menos los que se
Stage.addListener(myListener);
La función rec es la que se va a ejecutar cada vez que detectemos un cambio en el tamaño
del Stage:
myListener.onResize = rec;
function rec() {
alto = Stage.height;
if (alto<alto_minimo) {
alto = alto_minimo;
ancho = Stage.width;
if (ancho<ancho_minimo) {
ancho = ancho_minimo;
clips_ajustables[g].alinear();
Esta función obtiene en primer lugar el nuevo tamaño del Stage, lo compara con las
alinear() para cada uno de los elementos del array clips_ajustables que son los clips. Con
esto lo que hacemos es ajustar cada clip de la manera que le hayamos dicho. ¿cómo se lo
Para continuar vamos a definir dos métodos o funciones para todos los movieclips mediante
prototipos, los prototipos nos permiten añadir métodos a clases enteras sin tener que
ajuste_height), a través del cual vamos a indicar como queremos que se ajuste cada clip.
ajuste_height) {
this.ajuste_x = ajuste_x;
this.ajuste_y = ajuste_y;
this.ajuste_width = ajuste_width;
this.ajuste_height = ajuste_height;
this.x0 = this._x;
this.y0 = this._y;
this.w0 = this._width;
this.h0 = this._height;
this.ajustePersonalizado = false;
clips_ajustables.push(this);
this.alinear();
};
Como se ve al final del bloque de código ejecutamos el método alinear() del clip. Esta
función la definimos de un modo parecido con otro prototipo. Con alinear() lo que hacemos
es ajustar cada clip dependiendo de los ajustes que le hayamos pasado con setAjuste():
M ovieClip.prototype.alinear = function() {
if (this.ajuste_width) {
if (this.ajuste_width.indexOf("%") != -1) {
this._width = (_root.ancho*parseInt(this.ajuste_width))/100;
} else {
this._width = this.ajuste_width;
if (this.ajuste_height) {
if (this.ajuste_height.indexOf("%") != -1) {
this._height = (_root.alto*parseInt(this.ajuste_height))/100;
} else {
this._height = this.ajuste_height;
if (this.ajuste_x == "izquierda") {
this._x = this.x0;
if (this.ajuste_x == "derecha") {
this._x = Math.round(this.x0+(_root.ancho-_root.ancho_minimo));
if (this.ajuste_x == "centrar") {
this._x = Math.round((_root.ancho-this._width)*0.5);
if (this.ajuste_y == "arriba") {
this._y = this.y0;
if (this.ajuste_y == "abajo") {
this._y = Math.round(this.y0+(_root.alto-_root.alto_minimo));
if (this.ajuste_y == "centrar") {
this._y = Math.round((_root.alto-this._height)*0.5);
}
// si el clip tiene un ajuste especial ejecuto su función ajustar
if (this.ajustePersonalizado) {
this.ajustar();
};
esta propiedad va a tener un valor igual a true en el caso de que queramos ajustar el clip de
un modo personalizado. Es decir, si os habeis fijado en el método setAjuste las opciones que
tenemos para ajustar un clip son ajustar a la izquierda, a la derecha o al centro en el plano
horizontal, ajustar arriba, abajo o al centro en el plano vertical, y definir ancho y alto dando
un número de píxeles o dando un porcentaje del Stage. Estas opciones son básicas, es muy
probable que determinados clips queramos ajustarlos de otro modo. Para ello, en el
funciones ajustar() podreis ampliar este tutorial y desarrollar sitios donde todo de se ajusta
ejemplo es:
onClipEvent (load) {
this.piePagina_txt.autosize = "left";
this.x0 = this._x;
this.y0 = this._y;
_root.clips_ajustables.push(this);
ajustePersonalizado = true;
function ajustar() {
this.piePagina_txt._width = _root.tira2_mc._x-_root.tira1_mc._x-26;
this.piePagina_txt._width = _root.tira2_mc._x-_root.tira1_mc._x-26;
this._y = _root.alto-this._height-5;
}
En cambio en un clip que se ajusta según los criterios estándar es código sería más sencillo:
onClipEvent (load) {
Seguir esta instrucciones es complejo, así que os recomendamos la descarga del fla con
comentarios explicativos.
ejemplo_ajustePantalla.fla
El formateo de datos mediante XML, se ha convertido en una
solución universal, por lo tanto, la clase XML nos permite obtener
incorporar datos externos a nuestra película de un modo
estandarizado.
Por Tutoriales-flash.com
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
En este tutorial vamos a aprender a recibir una serie de datos en formato XML, comprobar
COMO HACERLO.
En nuestro ejemplo vamos a recibir datos XML con información de varios modelos de coches,
para ello vamos a cargar un documento de texto con formato xml llamado coches.xml. Para
mostrar el funcionamiento de la clase XML, nos valdrá este archivo, sin embargo, en
proyectos reales, lo corriente es que los datos xml los recibamos desde una base de datos
<coches>
</coches>
Si nos fijamos en su estructura vemos que consta de una cabecera donde incluye la
codificación del documento y de un nodo principal de primer nivel llamado . Todos los
documentos XML sólo pueden que un único nodo principal. Dentro de tenemos los nodos con
sus atributos, que son los que realmente contienen los datos de cada coche.
Para recibir estos datos correctamente en Flash debemos incluir las sentencias en el primer
fotograma:
System.useCodepage = true;
XML.prototype.ignoreWhite = true;
Con la primera línea le indicamos a Flash el sistema de códigos que debe emplear para no
tener problemas con las tildes y otros caracteres especiales. En la segunda línea le indicamos
que no interprete los saltos de línea de todos los futuros documentos XML como nodos
vacíos.
Creamos nuestro objeto XML y definimos la función que se ejecutará una vez la carga se
haya completado.
datos_xml.onLoad = cargarDatos;
function cargarDatos(exito) {
if (exito) {
cochesCargados = this.firstChild.childNodes;
pasar_a_array(cochesCargados[k]);
delete cochesCargados;
delete datos_xml;
verCoches();
} else {
transforma los datos de los nodos en un array que podemos ordenar por el criterio que
deseemos. La transformación de datos la lleva a cabo, concretamente, otra función, la
función pasar_a_array. En esta función extraemos los atributos de cada coche y creamos un
elemento nuevo con ellos en el array coches_array que es con el que nos vamos a quedar
definitivamente.
Number(atributos.id); coches_array.push(objetoCoche); }
function pasar_a_array(nodo) {
objetoCoche.marca = atributos.marca;
objetoCoche.modelo = atributos.modelo;
objetoCoche.vMax = Number(atributos.vMax);
objetoCoche.id = Number(atributos.id);
coches_array.push(objetoCoche);
Simplemente nos queda introducir el código de los botones para poder ordenar los datos.
on (release) {
coches_array.sortOn("marca");
verCoches();
on (release) {
verCoches();
}
En el botón "ordenar por id ":
on (release) {
coches_array.sortOn("id", Array.NUMERIC);
verCoches();
• Cargar una galería de imágenes que previamente hayamos depositado vía FTP en
en el servidor.
• Mostrar los enlaces de descarga de un conjunto de archivos en una carpeta.
(NUESTRO CASO)
• Explorar el contenido del disco duro del servidor web.
Como Flash no puede realizar esta función, necesitamos alguna tecnología de servidor como
PHP, ASP, ColdFusion..., en este tutorial vamos a emplear ASP.
COMO HACERLO.
formato XML la información de los archivos, en este ejemplo se trata de la carpeta files
situada en la raiz de nuestro dominio. En esta carpeta están los archivos de descarga que
Contenido de explorar.asp
<%
Response.Expires=0
Response.CacheControl="private"
' ----------------------------------------------------------------
Response.ContentType="text/XML"
fil=file.Name
Response.write("<archivo nombre='")
Response.write(file.Name)
Response.write("' size='")
Response.write(file.size\1024)
Response.Write("' />")
Next
Response.Write("</exploracion>")
' ----------------------------------------------------------------
%>
Donde ponéis la carpeta a explorar. Podéis ver el resultado del documento aquí.
XML.prototype.ignoreWhite = true;
miXML.onLoad = verArchivos;
function verArchivos(ok) {
carpetaElegida = this.firstChild.attributes.carpeta;
if (ok) {
var files = this.firstChild.childNodes;
files[k].attributes.nombre);
} else {
//fallo en la carga
function clicLista(component) {
getURL("/files/"+component.getSelectedItem().data, "_self");
En la primera línea,
XML.prototype.ignoreWhite = true;
le decimos a Flash, que ignore los espacios en blanco y las tabulaciones en el momento de
Después, definimos el objeto XML que va a recibir los datos del fichero ASP y la función
Por último falta el código del botón, que es el que carga los datos XML, el código es:
on (release) {
if (!miXML.loaded) {
miXML.load("/asp/explorar.asp");
Antes la única opción era ejecutar la sentencia loadMovie o loadMovieNum y había que
recurrir a incordiosos bucles para comprobar la carga completa del archivo externo.
ejecutará las acciones que le indiquemos cuando el clip esté disponible. Además, prodemos
ejecutar código en distintos momentos del proceso. Es decir, cuando se inice la carga
control!
Nota: Para comprobar el funcionamiento perfectamente los archivos a cargar deben estar
alojados en un servidor remoto.
En este recurso vamos a aprender a hacer una galería fotográfica.
En ella se mostrarán las miniaturas de las imágenes y cuando
hagamos clic en alguna de ellas se mostrará en grande. Todo ello se
hará cargando dinámicamente las imágenes.
Por Tutoriales-flash.com
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
COMO HACERLO.
Como veremos más delante, este tutorial es el resultado de juntar varios tutoriales
existentes en tutoriales-flash.com.
Lo primero que hay que hacer es crear las miniaturas en nuestro programa de
manipulación de imágenes preferido. Tanto las miniaturas como los originales deben estar en
originales y minis. Es importante que cada imagen tenga el mismo nombre de archivo
en el original y en la miniatura.
Después de esto, preparamos el archivo XML que nos va a dar la lista de fotos.
que podéis visualizar. Para aprender como enviarle a Flash un XML con la lista de archivos
Como leer los archivos que hay en una carpeta del servidor con ASP y pasarlo a Flash.
Para el resto del tutorial no saldremos de Flash. Todo el código del ejemplo va en el primer
fotograma salvo unas pequeñas acciones en los botones de pasar página. Vamos a ir
// acciones en fotograma 1
stop();
System.useCodepage = true;
XML.prototype.ignoreWhite = true;
import mx.transitions.Tween;
var pagina_actual:Number = 1;
var num_paginas:Number;
var IMG_array:Array;
miniaturasXML.onLoad = mostrarMiniaturas;
miniaturasXML.load("/asp/verMiniaturas.asp");
var fila:Number = 0;
var col:Number = 0;
IMG_array = this.firstChild.childNodes;
num_paginas = Math.ceil(IMG_array.length/12);
_root.getNextHighestDepth());
lienzo._x = 19;
lienzo._y = 100;
lienzo.setMask(mascara_mc);
if (col>2) {
col = 0;
fila++;
En el bloque anterior hemos definido el objeto XML que va a recibir los datos y también la
var bajo_clip:MovieClip =
lienzo_miniaturas.createEmptyMovieClip("bajo_"+filaF+"_"+columnaF,
lienzo_miniaturas.getNextHighestDepth());
lienzo_miniaturas.getNextHighestDepth());
mi_mcl.addListener(miListener);
clip.valor = "aaa";
// cargamos la imagen
mi_mcl.loadClip("/minis/"+ruta, clip);
miListener.onLoadStart = function(target_mc:MovieClip) {
// ponemos al _alpha a 0
target_mc._alpha = 0;
};
bytesTotal:Number) {
};
miListener.onLoadInit = function(target_mc:MovieClip) {
target_mc._x = (separacion*columnaF)+(100-target_mc._width)*0.5;
target_mc._y = (separacion*filaF)+(100-target_mc._height)*0.5;
// recolocamos el marco que rodea a la foto
bajo_clip._x = target_mc._x-5;
bajo_clip._y = target_mc._y-5;
// dibujamos el marco
with (bajo_clip) {
beginFill(0xffffff);
lineTo(target_mc._width+10, 0);
lineTo(target_mc._width+10, target_mc._height+10);
lineTo(0, target_mc._height+10);
lineTo(0, 0);
endFill();
// verFotoGrande
bajo_clip.onRelease = function() {
verFotoGrande(ruta);
};
};
Hasta aquí hemos definido la función que crea cada una de las miniaturas. En este tutorial
function verFotoGrande(ruta:String) {
clearInterval(intervaloColor);
2*IMG_array.length+10);
// posición vertical fija
grande._y = 100;
grande_mcl.addListener(grandeListener);
grande_mcl.loadClip("/originales/"+ruta, grande);
grandeListener.onLoadStart = function(target_mc:MovieClip) {
// tintado de blanco
myColor.setTransform(myColorTransform);
};
bytesTotal:Number) {
};
grandeListener.onLoadInit = function(target_mc:MovieClip) {
target_mc._x = 382+Math.round((315-target_mc._width)*0.5);
bajo_grande._x = target_mc._x-5;
bajo_grande._y = target_mc._y-5;
// dibujamos el marco
with (bajo_grande) {
beginFill(0xffffff);
lineTo(target_mc._width+10, 0);
lineTo(target_mc._width+10, target_mc._height+10);
lineTo(0, target_mc._height+10);
lineTo(0, 0);
endFill();
}
function cambiarColor() {
myColor.setTransform(myColorTransform);
indiceColor -= 2;
if (indiceColor == -1) {
clearInterval(intervaloColor);
};
Ya hemos creado la foto grande. Para hacer las transición de la foto grande hemos usado el
método setTransform de la clase Color. Es este otro tutorial se explica un ejemplo de su uso.
// pasar de página
function moverLienzo(posY:Number):Void {
pMenos_btn.enabled = false;
pMenos_btn._alpha = 30;
En página-
on (release) {
pMas_btn._alpha = 100;
moverLienzo(100-(pagina_actual-2)*464);
pagina_actual--;
// deshabilito el botón
if (pagina_actual == 1) {
pMenos_btn.enabled = false;
pMenos_btn._alpha = 30;
En página+
on (release) {
pMenos_btn.enabled = true;
pMenos_btn._alpha = 100;
moverLienzo(100-(pagina_actual*464));
pagina_actual++;
// deshabilito el botón
if (pagina_actual == num_paginas) {
pMas_btn.enabled = false;
pMas_btn._alpha = 30;
En este tutorial os hemos enseñado los pasos para hacer una galería de fotos, ahora es el
ejemplo.
que haremos será crear otro clip con la distorsión aplicada y ocultar el primero. El proceso se
COMO HACERLO.
La distorsión se va a hacer según este esquema donde cada bloque representa una columna
de píxeles:
Se va a descomponer la representación gráfica del clip original en filas o columnas según sea
El primer paso consiste en almacenar en un objeto bitmapData los píxeles del clip a
distorsionar. Lo llamaremos bitmap_1. Después vamos a crear un clip vacío que contendrá
el clip con la distorsión aplicada. Su identificador será contenedor. Para crear la distorsión
vamos a descomponer la rejilla de píxeles del objeto bitmap_1 en sus columnas, de modo
que nos quedará dentro del clip contenedor una serie clips de un píxel de ancho y la misma
altura que el original. Para copiar estos píxeles, nos apoyamos en otros objetos bitmapData,
que se corresponden con el identificador bitmap_temp que hay dentro del bucle en el código.
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
MovieClip.prototype.distorsionarV = function(distorsion:Number) {
bitmap_1.draw(this);
this._visible = false;
distorsionado_mc.removeMovieClip();
contenedor._x = this._x;
contenedor._y = this._y;
clip_temp._x = k;
clip_temp.attachBitmap(bitmap_temp,clip_temp.getNextHighestDepth(),"auto",true);
clip_temp._yscale = ((k/(alto-1))*(100-distorsion))+distorsion;
clip_temp._y = (alto-clip_temp._height)*0.5;
// liberamos memoria
bitmap_1.dispose();
};
distorsionarV(distorsion). El valor del parámetro distorsión debe estar entre 0 y 100 sino
los resultados son imprevisibles (podéis experimentar de todos modos). Un ejemplo sería:
miClip.distorsionarV(70);
El código os lo facilitamos en unos archivos .as de modo que para emplearlos tenéis dos
opciones:
Con esta base lo interesante es probar nuevas formas de distorsión o incluso combinar varias
distorsiones.
En esta imagen sea aplicado una distorsión horizontal y luego otra vertical para conseguir un
efecto de perspectiva.
Descarga de los archivos .as: distorsion.zip
Una herramienta gratuita para hacer gráficas en Flash. Permite
gráficos diversos, como gráficas de barras, de líneas, de tarta, etc.
Por Miguel Angel Alvarez
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
representación de datos. Se trata de Open Flash Chart, una herramienta de código libre,
Con Open Flash Chart podrás crear gráficas en tu página web con facilidad y sin necesidad de
tener Flash instalado en tu ordenador. En las gráficas podrás cargar los datos que desees y
elegir entre varios tipos de gráficas, los colores, etc. Una vez publicadas las gráficas en tu
sitio web las podrán ver todos los visitantes que tengan instalado el plugin de Flash, lo que
Es un proyecto muy completo, que no sólo permite crear variados modelos de gráficas, sino
que además tiene diversos tipos de usos y tiene librerías para utilizar integrar el sistema de
gráficas Flash con la carga de datos en diversos lenguajes de programación web como
En el momento de escribir este artículo está en fase de desarrollo la nueva versión del
producto, Open Flash Chart 2, que tiene diversas mejoras, pero principalmente se trata de
permite una mejor organización del código y el crecimiento del proyecto. Podemos encontrar
Lo más destacable para los desarrolladores que pretendan utilizar la segunda versión de
Open Flash Chart es que la carga de datos se realiza por JSON, una notación especial de
Javascript para la definición de objetos.
Para hacer unas pruebas del sistema, aunque la versión segunda del proyecto está en fase
Beta, en DesarrolloWeb.com hemos creído que sería mejor ver la segunda versión. Según
La creación de gráficas en Flash se puede hacer de una manera bastante rápida, al menos
los primeros ejemplos que ofrecen. Para ello será necesario que descarguemos el sistema
desde zona de Download de la página de Open Flash Chart. Con ello obtendremos un archivo
Dentro veremos una estructura de directorios que tiene muchos códigos y componentes,
aunque no cabe asustarse, porque para los ejemplos más sencillos no hace falta utilizar más
que un archivo, que es la película Flash (archivo open-flash-chart.swf) que hay en la raíz del
paquete comprimido. Esa película o animación Flash es la que tiene el código para generar
por Flash la gráfica. Luego la tendremos que configurar con un archivo JSON para indicarle
Para incluir en una página web la película Flash tenemos que utilizar un código como este:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=
8,0,0,0"
width="600"
<embed
src="open-flash-chart.swf"
quality="high"
bgcolor="#FFFFFF"
width="600"
height="300"
name="open-flash-chart"
align="middle"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
Este código lo he extraído del tutorial 1 de la creación de gráficas Flash que tienen en la
propia página del proyecto. Es un código normal para incluir una película Flash en una página
web.
Ahora bien, para que esto funcione tienes que tener en cuenta una serie de cosas que
veremos a continuación.
donde está el archivo con el código HTML anterior. Podrías cambiar el archivo swf al lugar
que desees, pero entonces tendrás que actualizar la ruta a este archivo en el código HTML
anterior. Fíjate que la ruta al archivo está en dos sitios del código anterior, en una etiqueta
2) Tienes que crear el código JSON para la carga de datos de la gráfica y ponerlo en el lugar
correcto, con el nombre de archivo "data.json". Según la documentación de Open Flash Chart
parece que se busca este archivo de datos en varios lugares ese archivo json, por ejemplo en
la raíz del dominio, pero según las pruebas que he hecho en desarrolloweb .com, no me ha
funcionado así. Luego veremos un ejemplo de este código y una manera de localizarlo para
en un servidor web. Es decir, tienes que publicarlos en tu espacio de alojamiento que tengas
el servidor web. Esto es porque el Flash adquiere por http el archivo JSON, por medio de
Ajax, lo que sólo funciona si estás en un servidor web y accedes a la página a través de http.
El archivo JSON lo debemos crear para indicarle a la película Flash cuáles son los datos que
se tienen que mostrar. Este archivo se escribe con una sintaxis especial, en lenguaje
Javascript. No te asustes porque la sintaxis es sencilla de leer, entender, editar según tus
De todos modos, el propio Open Flash Chart tiene una serie de librerías en distintos
generar juegos de datos en sintaxis JSON, por lo que no tendrías por qué conocer nada sobre
"title":{
},
"y_legend":{
},
"elements":[
"type": "line",
"alpha": 0.5,
"colour": "#0000cc",
"values" : [14,12,14,9,10,12,15,12,13]
},
"type": "line",
"alpha": 0.5,
"colour": "#660033",
"values" : [9,7,8,10,12,14,13,10,11]
],
"x_axis":{
"stroke":2,
"colour":"#d000d0",
"grid_colour":"#00ff00"
},
"y_axis":{
"stroke": 4,
"tick_length": 3,
"colour": "#9933ff",
"grid_colour": "#0000ff",
"offset": 0,
"max": 20
} Lo he sacado del tutorial que ofrecen en la página del producto y sólo he adaptado unas
pocas cosas para personalizarlo y de paso conocer algunas de las funcionalidades de este
módulo.
Ahora sólo tendríamos que indicar el lugar donde está el archivo con los datos. Para ello la
Coloca simplemente el archivo JSON en el mismo directorio que has colocado tanto la página
web con el código HTML para invocar al Flash, como la propia película, con el nombre
Ahora accede a esa página indicando en la URL el nombre del archivo JSON:
http://www.tudominio.com/ruta_de_tu_archivo_html.html?ofc=data.json