Material Flash Nombrar instancias Cuando piensas agregar ActionScript para dar funcionalidad a los botones y MovieClips de una película, es una buena práctica nombrar las instancias. Las instancias en el escenario se nombran utilizando el Panel de propiedades (Instance Name). Es muy importante que des a las instancias un nombre que te permita identificarlas plenamente, ya que el nombre que des al objeto es el que se usará en la programación. En ActionScript se acostumbra agregar a todos ios nombres de instancias de botones la terminación _btn, por ejemplo: optionl_btn o reproducir_btn. Similarmente, se acostumbra agregar a todos los nombres de instancias de MovieClips la terminación _mc, como avion_mc o corredor_mc. A las instancias de texto se les da la terminación _txt. Si sigues esta convención al nombrar las instancias de tus objetos, podrás además aprovechar la ayuda que Flash presenta al programador, ya que reconoce las terminaciones y sugiere acciones relacionadas con botones, MovieClips o textos, según corresponda. Si sigues las convenciones para nombrar instancias, Flash muestra las propiedades y métodos del tipo de objeto, en cuanto escribes el punto. A partir de esta sección, en explicaciones y actividades se usará la convención para nombrar las instancias que se explicó en los párrafos anteriores. De esta manera, podrás identificar fácilmente los nombres de instancias de cada tipo. Es muy importante nombrar las instancias antes de escribir la primera línea de código. Si ya hay código escrito y cambias el nombre de alguna instancia, el código no se actualiza para reflejar los cambios y la aplicación no funcionará. Al nombrar las instancias ten cuidado de no dejar espacios al final del nombre, no usar símbolos internacionales (como acentos o ñ), ni signos de puntuación. Sintaxis de punto Las propiedades son atributos que definen un objeto. En ActionScript las propiedades se identifican porque siempre llevan un guión bajo, antes de su nombre por ejemplo _x, _height, _alpha o _visible. Cada propiedad determina alguna característica del objeto como su posición, altura, transparencia o si está o no visible en el escenario. Es posible consultar el valor de una propiedad o asignar a una propiedad un valor. Para referirnos a la propiedad de un objeto, ActionScript utiliza una sintaxis de punto que es común en muchos lenguajes de programación orientados a objetos. Cuando se usa esta sintaxis, una línea de instrucción siempre comienza con el nombre de un objeto seguido de un punto y de alguna propiedad de dicho objeto: objeto.propiedad; Material Flash Por ejemplo, la propiedad _x de un MovieClip se refiere a la posición horizontal del objeto en el escenario (coordenada x). Si tenemos un objeto llamado pelota_mc, entonces podemos usar el siguiente comando para que el objeto se ubique 50 píxeles a la derecha del extremo izquierdo del escenario: pelota_mc._x =50; O bien, podemos usar esta instrucción para que el MovieClip se desplace 10 píxeles a la derecha de su posición actual: pelota_mc._x = pelota_mc ._x + 10; O en su forma abreviada: pelota_mc._x += 10; La sintaxis de punto también se utiliza para expresar los métodos de un objeto. Los métodos son cosas que puede realizar el objeto, como detener su reproducción, avanzar un cuadro o permitir ser arrastrado por el ratón. objeto.método; Por ejemplo, si tenemos un MovieClip animado, llamado pelota_mc, entonces podemos usar el siguiente comando para que el objeto detenga su reproducción: pelota_mc.stop(); Este tipo de instrucciones se pueden asignar a un Keyframe o al evento de un objeto tal y como se hizo en la actividad anterior. Operadores Los operadores se utilizan para trabajar con los valores de las propiedades o las variables y son una parte fundamental del lenguaje ActionScript. F/ash permite utilizar una gran variedad de operadores que se clasifican en tipos. En las siguientes tablas se enlistan los principales operadores y su función. Casi todos son muy comunes y se utilizan en diferentes lenguajes de computadora. • Operadores de asignación OPERADOR = FUNCIÓN Asigna el valor de una operación o una expresión en una variable. La asignación siempre es de derecha a izquierda. EJEMPLO DE USO pelota_mc._x =13; += Asigna a una variable el valor de esa misma variable más otro valor. Se usa para incrementar el valor de una variable. pelota_mc._x +=1; Costo +=unidad; -= Asigna a una variable, el valor de esa misma menos otro valor. Se usa para decrementar el valor descuento; de una variable. pelota_mc._x -= 1; Costo -= *= Asigna a una variable el valor de esa misma variable multiplicado por otro valor. pelota_mc._height *= 3; /= Asigna a una variable el valor de esa misma variable dividido entre otro valor pelota_mc._height /= 3; ++ -- Incrementa en uno, el valor de una variable Decrementa en uno, el valor de una variable. pelota_mc._rotation ++; pelota_mc._rotation --; Material Flash • Operadores Aritméticos OPERADOR + EJEMPLO DE USO Total= A+B; - Se emplea para restar valor o asignar signo negativo a un número. Total = A - 7; * Multiplica dos numéricas. Total = A*3; / Divide dos expresiones generando decimales. % • FUNCIÓN Sirve para sumar dos expresiones o conectar cadenas de texto. expresiones Devuelve el residuo de la división de dos expresiones. Este operador se llama módulo. Total=A/2 Total = A%2 Operadores de Comparación OPERADOR == FUNCIÓN Regresa un valor verdadero (True) si dos expresiones son iguales. EJEMPLOS DE USO if(A==B){ play(); } != Regresa un valor verdadero (True) si dos expresiones son diferentes. if(A!=B){ play(); } > Regresa un valor verdadero (True) si la expresión de la izquierda es mayor que la de la derecha. if (A>B){ play(); } < Regresa un valor verdadero (True) si la expresión de la izquierda es menor que la de la derecha. if (A<B){ play(); } >= Regresa un valor verdadero (True) si la expresión de la izquierda es mayor o igual que la de la derecha. if (A>=B){ play(); } <= Regresa un valor verdadero (True) si la expresión de la izquierda es menor o igual que la de la derecha. if (A<=B){ play(); } Control de líneas de tiempo Imagina que creas un MovieClip con la imagen de una bicicleta sin ruedas. Puedes utilizar la linea de tiempo de este MovieClip para crear un MotionTween que mueva la bicicleta de un extremo a otro del escenario. Para las ruedas puedes crear un segundo MovieClip que represente una rueda girando y colocar dos instancias del MovieClip de la rueda dentro del MovieClip de la bicicleta. Material Flash Utilizando instrucciones de ActionScript, sería posible iniciar o detener el giro de las ruedas o el movimiento de la bicicleta, pero para lograrlo es necesario comprender cómo funcionan las jerarquías de las líneas de tiempo. Cuando colocas la instancia de un MovieClip dentro de la línea de tiempo de otro MovieClip, a la instancia interior se le conoce como "hijo" (Child) y a la que la contiene se le conoce como "padre" (Parent). En este esquema, la línea de tiempo principal sería padre de todas las instancias que se coloquen sobre el escenario y naturalmente, la línea de tiempo principal no tiene padre. Las relaciones entre padres e hijos son jerárquicas. Para comprender esta jerarquía, compárala con la del disco duro de tu computadora. El disco duro tiene una raíz, a partir de la cual se pueden crear carpetas y dentro de esas carpetas se pueden crear más carpetas, dando como resultado un esquema de árbol. De la misma manera en una película Flash, la línea de tiempo principal es la raíz y a partir de ella pueden existir MovieClips y dentro de éstos otros MovieClips, cada uno con sus líneas de tiempo. Las instancias y sus líneas de tiempo pueden enviarse mensajes entre sí, por medio de ActionScript. La línea de tiempo que envía el mensaje (la que contiene las instrucciones en ActionScript) se denomina Línea de tiempo de control (controlling timeline). La línea de tiempo que recibe la acción se denomina Línea de tiempo destino (target timeline). Cuando una instrucción debe efectuar una acción sobre un objeto que no está en la misma línea de tiempo, es necesario especificar la ruta destino (target path), que puede ser absoluta o relativa. Imagina que en la línea de tiempo principal (_root) se ha colocado una instancia del MovieClip bici_mc, que a su vez contiene dos instancias de una rueda girando, llamadas ruedal_mc y rueda2_mc. Cada MovieClip tiene su propia línea de tiempo que se reproduce de forma independiente normalmente: _root bici_mc rueda1_mc rueda2_mc Ahora imagina que desde un cuadro de la línea de tiempo principal, queremos hacer que se detenga el giro de una rueda. La instrucción que hay que agregar al cuadro es: Controlling timeline Instrucciones con la ruta adecuada _root bici_mc bici_mc.rueda1_mc.stop() rueda1_mc rueda2_mc Veamos ahora otro caso basado en el mismo esquema. Se requiere que al hacer clic sobre la instancia bici_mc, se Material Flash detenga la otra rueda. Ahora la acción no la controla la línea de tiempo principal, sino se escribe dentro del objeto b¡ci_mc. La Instrucción quedaría así: Controlling timeline Instrucciones con la ruta adecuada _root bici_mc on (release){ rueda2_ mc.stop() } rueda1_mc rueda2_mc Opcionalmente obtendrías el mismo resultado usando la ruta absoluta completa: Controlling timeline Instrucciones con la ruta adecuada _root bici_mc on (release){ _root.bici_ mc.rueda2_ mc.stop() } rueda1_mc rueda2_mc Considerando el mismo esquema jerárquico, imagina ahora que desde la línea de tiempo de la rueda 1, deseas detener la reproducción de la rueda 2. Puedes usar una ruta relativa: Controlling timeline Instrucciones con la ruta adecuada _root bici_mc rueda1_mc _parent.rueda2_mc.stop() rueda2_mc O bien una ruta absoluta: Controlling timeline Instrucciones con la ruta adecuada _root bici_mc rueda1_mc rueda2_mc _root.bici_mc.rueda2_mc.stop() Material Flash (segunda parte) Variables Una variable es un contenedor de información que se identifica con un nombre. Puede contener cadenas de texto, números o valores booleanos (verdadero y falso). Los nombres de las variables deben seguir algunas reglas: 1. El nombre de una variable no puede empezar con un número. El nombre tampoco puede contener espacios, signos de puntuación o símbolos internacionales como @, ñ, ¿, #, entre otros. 2. El nombre de una variable no puede ser igual a una palabra reservada de ActionScript. Por ejemplo, no puedes crear una variable que se llame release, on 0 True. Cuando escribes código en el Panel de acciones, las palabras reservadas de ActionScript aparecen en azul y los nombres de variables (entre otras cosas) aparecen en negro. 3. El nombre de una variable debe ser único en su ámbito de acción (explicaremos esto después de la siguiente actividad). Por ejemplo, en un mismo MovieClip no puedes usar una variable que se llame velocidad para guardar dos cosas diferentes. Para poder utilizar una variable es importante "declararla", anteponiendo la palabra var al nombre de la variable, por ejemplo: var total; var puntos; var ancho; Una variable puede ser inicializada o no, que quiere decir, asignarle un valor al momento de declararla, por ejemplo: var costo = 50; var puntos = 0; var nombre = "Marie"; Ámbitos de las variables En la actividad anterior declaraste algunas variables en un Keyframe de la línea de tiempo. También es posible declarar variables en códigos que se encuentren en MovieClips, botones o incluso en archivos de código externos. Sin embargo, las variables tienen un ámbito de acción en el que son reconocidas después de declararlas. Variable Local. Está disponible sólo dentro del manejador (handler), objeto o función en que se define. Por ejemplo, si declaras una variable dentro del código asignado a un MovieClip, la variable no está disponible fuera de ese MovieClip. Variable de la Línea de tiempo. Está disponible en cualquier instrucción en la línea de tiempo en que se define, ya sea la línea de tiempo principal, la línea de tiempo de una escena o la línea de tiempo de un MovieClip. Material Flash (segunda parte) Variable Global. Es reconocida en todas las líneas de tiempo de la película y en todos los objetos. Para que una variable sea global, debe especificarse anteponiendo a su nombre la palabra reservada _global. Por ejemplo, si en el frame 1 de la línea de tiempo principal defines la variable var _global.puntos =0; puedes usarla en cualquier lugar de la película. Estructuras Condicionales Todos los lenguajes de programación tienen un condicional if que se utiliza para la toma de decisiones. En ActionScript la sintaxis del condicional if es: if (condición) { acciones, } Esto equivale a decir: "Si la condición se cumple (si es verdadera), se ejecutan todas las acciones que estén entre las llaves. Si la condición no se cumple (si es falsa) las acciones son ignoradas." El condicional if puede tener además una cláusula else con la siguiente sintaxis: if (condición) } acciones1; }else{ acciones2; } El uso del else podría expresarse así: "Cuando la condición se cumple (si es verdadera) se ejecutan las acciones1 y cuando la condición no se cumple (si es falsa) se ejecutan las acciones2" Publicación de proyectos de Flash Flash ofrece ocho formatos para la publicación de proyectos. Se pueden acceder utilizando el Menú File/Publish Settings. Un proyecto puede ser publicado en varios formatos con un sólo comando, eligiendo los formatos deseados desde este cuadro de diálogo. Al seleccionar formatos de publicación, se crean fichas con opciones relacionadas con cada tipo de formato. Dependiendo del objetivo y destino final del proyecto, se pueden elegir diferentes formas para publicar una película de Flash. • Flash (.swf): Genera el swf estándar, que respeta todas las características de la película. Para ver una película swf es necesario tener instalado el F/ash Player, que normalmente viene incluido con los navegadores de Internet como el Internet Explorer El Flash Player también se puede descargar de forma gratuita desde el sitio de Adobe. • HTML (.html): Genera un archivo html que permite ligar la película swf para visualizarla desde un navegador de Internet. Para ver la película en Internet debes publicar tanto en swf como en html y subir o distribuir ambos archivos. • Windows Projector (.exe): Genera un archivo ejecutable (.exe) para plataformas Windows. Un archivo ejecutable de una película de Flash puede ejecutarse desde un CD o en modo local, sin necesidad del Flash Player Material Flash (segunda parte) • Macintosh Projector (.hqx): Genera un archivo ejecutable (.hqx) para plataformas Macintosh. Es un video que puede ser tratado por programas de edición de video. • QuickTime (.mov): Genera un video en formato QuickTime. Sólo es una secuencia lineal y se pierden todas las características de interactividad o programación. • GIF (.gif): Genera una secuencia de imágenes (cuadro por cuadro) de lo que se encuentra en el escenario. El formato Gif tiene un máximo de 256 colores y se usa sólo para crear pequeñas animaciones como las usadas en los emoticons de los programas de chat. • JPEG (.jpg): Genera una imagen única del frame de la película en el cual se encuentre la cabeza lectora. • PNG (.png): Genera una imagen única del frame de la película en el cual se encuentre la cabeza lectora. A diferencia del formato jpeg, éste puede contener áreas transparentes. Sonido (Sound) Para hacer más atractiva una película o una animación, Flash permite incorporar sonidos, que se importan en formatos comunes como Wav, Aiff y MP3, entre otros, usando el Menú File/Import/Import to Library... Una vez importado, un sonido queda como un elemento en la biblioteca de símbolos y puede usarse colocándolo en un frame o accediendo a él por medio de programación. El sonido en un frame puede ejecutarse básicamente en dos modos de sincronía (Sync): Event El sonido se reproduce completo (de inicio a fin) en cuanto la reproducción de la película llega al frame en el que se encuentra el sonido. Una vez iniciado, un evento de sonido continúa hasta terminar independientemente de si la reproducción de la película sigue, se detiene o salta a un lugar diferente, a menos que sea silenciado mediante programación. Stream Sincroniza el sonido con la línea de tiempo. Si la reproducción de la película se detiene, el sonido también se detiene y si la reproducción salta a un lugar diferente, la secuencia del sonido también. Cuando una película Flash se publica en Internet, un sonido del tipo Event debe descargar completamente antes de que pueda ser reproducido. Un sonido de tipo Stream puede comenzar a reproducirse conforme va descargando, de modo que es más conveniente para uso en Web. A un sonido se le pueden incluir los siguientes efectos directamente en el Panel de propiedades: 1. Ninguno: el sonido no tiene ningún efecto y se reproduce tal como se importó. 2. Left Channel: el sonido se reproduce solamente por el altavoz izquierdo. 3. Right Channel: el sonido se reproduce solamente por el altavoz derecho. 4. Fade left to right: el sonido comienza a escucharse por el altavoz izquierdo y continúa por el derecho. 5. Fade right to left: el sonido comienza a escucharse por el altavoz derecho y continúa por el izquierdo. 6. Fade in: el sonido comienza a reproducirse con el volumen en O y aumenta hasta llegar al nivel original con el que se importó. 7. Fade out: el sonido comienza a reproducirse tal como se importó y disminuye el volumen hasta llegar al nivel 0. 8. Custom: puede modificarse la forma en que se escuchará en los altavoces. Material Flash (segunda parte) Instancias y propiedades Para utilizar un símbolo en algún frame de la película, simplemente selecciona el frame en cuestión y arrastra el símbolo desde la biblioteca hasta el escenario. Esto crea una Instancia del símbolo, que es una imagen clon del símbolo original. Puedes crear todas las instancias que quieras de un mismo símbolo, modificar cada instancia cambiando sus dimensiones o propiedades o aplicar diferente comportamiento a cada una mediante programación. Cuando modificas cualquier instancia, el símbolo original no se ve afectado. En el caso opuesto, si modificas el símbolo original, todas sus instancias son afectadas. Una vez en el escenario se pueden establecer los parámetros de una instancia usando el Panel de propiedades. Instance Name. Se utiliza para identificar la instancia de un símbolo. Es muy recomendable asignar un nombre en cuanto se crea una instancia, ya que es necesario para la programación: • X. Indica o asigna la posición horizontal en el escenario. • Y. Indica o asigna la posición vertical en el escenario. • W (Width). Muestra o determina el ancho de la instancia. • H (Height). Muestra o determina el alto de la instancia. • Rotate. Indica o asigna un ángulo de giro. • Skew. Indica o determina la deformación oblicua de la instancia. • Color. Permite asignar un aspecto especial como: • Brightness. Ajusta el color a más blanco o negro. • Tint. Pinta una instancia con un tono de la paleta de colores. • Alpha. Aplica un porcentaje de transparencia a una instancia. • Advanced. Ajusta con detalle los colores (Tint) y transparencia (Alpha). Material Flash (segunda parte)