SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
Curso: Diseño y Programación en Flash (UNED) – Práctica Completa
::Versión de Flash::Adobe Flash CS3 Professional
::Lenguaje de Programación::ActionScript 2.0
::Técnicas y recursos utilizados::
        ::Componentes:: Accordion, Button, ProgressBar, RadioButton, ScrollPane, Tree, MediaDisplay,
        MediaController, Window, etc.
        ::Video:: CamStudio (herramienta para grabar la actividad de la pantalla del PC a un archivo .AVI o
        .SWF), Importar e implementar video streaming.
        ::Audio:: Reproducir y controlar música.
        ::Capas Máscara y Capas Guía::
        :: loadMovie:: Fragmentación de la aplicación en varios archivos externos con el fin de reducir peso
        y tiempos de carga.
        :: Clip de Película (MovieClip)::Crear piezas de animación reutilizables con sus propias líneas de
        tiempo.
        ::XML:: Implementación de archivos XML para la carga de los ítems de los menús de navegación
        horizontal y vertical, así como para la carga de los componentes Tree.
        ::#include:: Cargar ActionScript fuera de la película usando un archivo .as con el fin de reutilizar
        bloques de código.
        ::import:: POO. Separar la funcionalidad que queremos realizar y almacenarla en clases
        independientes de forma que podamos instanciar (crear objetos de dicha clase) desde diferentes
        sitios.


Introducción

El objetivo de esta práctica es aplicar de forma integral los aspectos básicos de flash en una aplicación web,
realizada totalmente en flash, que permite clasificar y acceder a una serie de prácticas resueltas
relacionadas con materias informáticas.




                                                      bitCoach::Juan Bautista Cascallar Lorenzo::Página 1
Estructura principal de la Aplicación
La aplicación consta de tres áreas principales. En la zona 1 se carga un menú de navegación horizontal
(MNH) a través de cuyos ítems se accede a los bloques de carácter más global de la aplicación (Ofimática,
Programación, Redes,…). En la zona 2 se cargará, según la opción de menú MNH seleccionada, la película
externa correspondiente (loadMovie) a cada sección. Finalmente la zona 3 contiene un bloque o barra
inferior que agrupa una serie de funcionalidades en un clip de película.




                                                                               1




                                       2




                                                                           3




                                                      bitCoach::Juan Bautista Cascallar Lorenzo::Página 2
Menú de navegación horizontal MNH

Los ítems de este menú se cargan a través de un fichero XML (HNav_Menu.xml). De esta forma
actualizando este fichero podremos añadir más secciones al menú. El fichero xml contiene los títulos de los
ítems que formarán el menú así como las rutas a los ficheros .swf externos que se cargarán mediante
loadMovie dependiendo de la opción seleccionada.




HNav_Menu.xml

<?xml version="1.0" encoding="UTF-8"?>
<menu>
        <item titulo="Ofimática" src="Ofimatica/mainmsoffice.swf"/>
        <item titulo="Programación" src="Programacion/mainprogramacion.swf"/>
        <item titulo="Redes" src="Redes/mainredes.swf"/>
        <item titulo="Diseño" src="Diseno/maindiseno.swf"/>
</menu>


A continuación se añade el código ActionScript que nos permite cargar y operar con el menú. Básicamente
se carga y se procesa el fichero XML, se posicionan los ítems del menú y en función de la opción de menú
que seleccionemos se cargará el fichero .swf externo correspondiente en el área de visualización
(clip::seccioness_mc). Otras cosas que ocurren al pulsar en una opción del menú es que se posiciona el
segmento o rectángulo gris debajo de la opción seleccionada y se actualiza la información en el recuadro de
texto mostrando el ítem seleccionado.
El código implementa sobre cada ítem del menú, además del evento onPress, los eventos onRollOver y
onRollOut de forma que al situar el cursor del ratón sobre un ítem del menú, el texto se pondrá en negrita
hasta que retiremos el cursor.

//----------------------------------------------------------------------------
var t=0
Rastro_mc._x = 38;
myTextFormat = new TextFormat();
//----------------------------------------------------------------------------
menuXml = new XML();
menuXml.ignoreWhite = true;
menuXml.onLoad = function(exito) {
        if (exito) {
               menuItem = menuXml.firstChild.childNodes;
               for (var i = 0; i < menuItem.length; i++) {
                      TITULO = menuItem[i].attributes.titulo;
                      SRC = menuItem[i].attributes.src;
                      posicionar();
               }//Fin for
        }//Fin if
}//Fin function
menuXml.load("HNav_Menu/HNav_Menu.xml");




                                                    bitCoach::Juan Bautista Cascallar Lorenzo::Página 3
//----------------------------------------------------------------------------
posicionar = function():Void{

       if(t <= menuItem.length){

              this.attachMovie("item_mc", "item_mc"+t, t);

              switch (t) {
                     case 0:
                                this["item_mc"+t]._x = 10;
                      break;
                      case 1:
                                this["item_mc"+t]._x = 80;
                      break;
                      case 2:
                             this["item_mc"+t]._x = 170;
                     break;
                     default:
                             this["item_mc"+t]._x = 220;
              }//fin del switch
              //---
              this["item_mc"+t]._y = 15;
              this["item_mc"+t].pelicula = SRC;
              this["item_mc"+t].etiqueta_txt.text = TITULO;
              //---

              //BOTONES - ONPRESS
              this["item_mc"+t].Rectangulo_btn.onPress = function(){
                     if(this._parent.etiqueta_txt.text == "Ofimática"){
                             _root.localizacion_txt.text = "Ofimática";
                             Rastro_mc._x = 38;
                             loadMovie(this._parent.pelicula,_root.secciones_mc);
                             barraProgreso_secciones_mc();
                     }else if(this._parent.etiqueta_txt.text == "Programación"){
                             _root.localizacion_txt.text = "Programación";
                             Rastro_mc._x = 118;
                             loadMovie(this._parent.pelicula,_root.secciones_mc);
                             barraProgreso_secciones_mc();
                     }else if(this._parent.etiqueta_txt.text == "Redes"){
                             _root.localizacion_txt.text = "Redes";
                             Rastro_mc._x = 186;
                             loadMovie(this._parent.pelicula,_root.secciones_mc);
                             barraProgreso_secciones_mc();
                     }else if(this._parent.etiqueta_txt.text == "Diseño"){
                             _root.localizacion_txt.text = "Diseño";
                             Rastro_mc._x = 240;
                             loadMovie(this._parent.pelicula,_root.secciones_mc);
                             barraProgreso_secciones_mc();
                     }
              }//Fin function

              //BOTONES - ONROLLOVER
              this["item_mc"+t].Rectangulo_btn.onRollOver = function(){
                     myTextFormat.bold = true;
                     aplicarFormato(this);
              }//Fin function
              //BOTONES - ONROLLOUT
              this["item_mc"+t].Rectangulo_btn.onRollOut = function(){
                     myTextFormat.bold = false;
                     aplicarFormato(this);
              }//Fin function

               t++;
       }//Fin if
}//Fin function posicionaar

aplicarFormato = function(p:Button):Void{
       if(p._parent.etiqueta_txt.text == "Ofimática"){
               p._parent.etiqueta_txt.setTextFormat(myTextFormat);
       }else if(p._parent.etiqueta_txt.text == "Programación"){
               p._parent.etiqueta_txt.setTextFormat(myTextFormat);
       }else if(p._parent.etiqueta_txt.text == "Redes"){
               p._parent.etiqueta_txt.setTextFormat(myTextFormat);
       }else if(p._parent.etiqueta_txt.text == "Diseño"){
               p._parent.etiqueta_txt.setTextFormat(myTextFormat);
       }
}




                                                   bitCoach::Juan Bautista Cascallar Lorenzo::Página 4
Bloque Presentación
Nada más iniciar la aplicación (index.swf), se carga el fichero externo presenta.swf en la zona de
visualización (secciones_mc). El bloque de presentación, el cual se ejecutará una única vez al iniciar la
aplicación, incluye tres efectos. En la animación 1 aparece el nombre y apellidos con un efecto máscara. La
animación 2 crea unas pompas de jabón que van ascendiendo y dispersándose por la pantalla. La
animación 3 muestra un logo flash con efecto alpha.




                                                                         presenta.swf




                   1                             2

                                                                           3



Efecto 1 – Máscara

Básicamente el efecto se consigue desplazando mediante ActionScript los clips (rectángulos de color verde)
de las capas máscara en las direcciones indicadas.




                                                      bitCoach::Juan Bautista Cascallar Lorenzo::Página 5
nombre01_mc.setMask(mask_nombre01_mc);
nombre02_mc.setMask(mask_nombre02_mc);
apellido01_mc.setMask(mask_apellido01_mc);
apellido02_mc.setMask(mask_apellido02_mc);

i = 5;

_root.onEnterFrame = function (){
       if(mask_nombre01_mc._y < (-38)){
               mask_nombre01_mc._y = mask_nombre01_mc._y + i;
       }
       if(mask_nombre02_mc._x < 10){
               mask_nombre02_mc._x = mask_nombre02_mc._x + i;
       }

         if(mask_apellido01_mc._y < (-13)){
                mask_apellido01_mc._y = mask_apellido01_mc._y + i;
         }

         if(mask_apellido02_mc._x < 100){
                mask_apellido02_mc._x = mask_apellido02_mc._x + i;
         }
}


Efecto 2 – Pompas de jabón

Básicamente se crean un número de burbujas determinado por maxGlobos, en este caso 100 llamando
cada 30 milisegundos (setInterval) a la función creaGlobo(). En el cuerpo de esta función se implementa la
funcionalidad para crear un duplicado del clip de película que representa la pompa de jabón
(duplicateMovieClip) y configurar aleatoriamente el desplazamiento y tamaño de la burbuja mediante las
propiedades del clip _x (coordenada x del clip), _y (coordenada y del clip), _xscale (escala horizontal) y
_yscale (escala vertical).


maxGlobos = 100; // Máximo de Globos que se crean.
nivel = 1;

//Llama a la función "creaGlobo" cada 30 milisegundos.
otroGlobo = setInterval(creaGlobo,30);


//--Función que crea una burbuja-----------------------
function creaGlobo()
{
       nivel++;
       nivelglobon++;
       duplicateMovieClip (globo, "globo"+nivel, nivel);
       u= random(80);
       w = random(150);
       sx = random(120)+35;

         setProperty   ("globo"+nivel,   _x,250+w);
         setProperty   ("globo"+nivel,   _y,400+u);
         setProperty   ("globo"+nivel,   _xscale,sx);
         setProperty   ("globo"+nivel,   _yscale,sx);

         if(nivel == maxGlobos){
                //Elimina el setInterval para que no siga llamando a la función "creaGlobo".
                clearInterval(otroGlobo);
         }
}

Efecto 3 – Logo flash con efecto alpha

logo_flash_mc.onEnterFrame = function() {
   if(this._alpha < 70){
      this._alpha += 2;
   }else {
      // eliminamos el loop
      delete this.onEnterFrame;
   }
}


                                                        bitCoach::Juan Bautista Cascallar Lorenzo::Página 6
Sección “Ofimática”
Los contenidos de la sección de “Ofimática” están organizados y accesibles mediante un menú vertical
creado a partir de una instancia del componente Accordion 1. La ventaja de este componente, configurado
como menú, es que nos permite mostrar u ocultar grupos de ítems en secciones pinchando en la pestaña
correspondiente. Para añadir los ítems de menú a cada sección se han creado e incorporado botones
(componentes tipo Button), de forma que accederemos a los distintos contenidos pinchando (evento
onPress) en cada uno de ellos. Por ejemplo, cuando pinchamos en el botón "WRITER - Procesador de
textos" iremos al fotograma etiquetado como “writer”, mediante gotoAndStop("writer"), que visualiza el
contenido asociado. Lo mismo para los demás ítems del menú. El contenido se carga en un componente de
tipo ScrollPane, por ejemplo, objSP01.contentPath = "writer_mc".

if(!objSP01){
       this.createClassObject(mx.containers.ScrollPane, "objSP01", 1);
}
objSP01.move(209.3, 0);
objSP01.setSize(530, 425);
objSP01.contentPath = "writer_mc";




                                                                              mainmsoffice.swf




                    1
                                                                   2




                                                  bitCoach::Juan Bautista Cascallar Lorenzo::Página 7
Menú de tipo Acordeón
import mx.core.View;
import mx.controls.Label;
import mx.controls.Button;

if(objSP01){
       objSP01.removeMovieClip();
}

/*=======================================================================
MENÚ ACCORDION
=======================================================================*/
stop();

_global.acc = true;

if(acc==true){

       menu_acc.setSize(200, 300);
       menu_acc.move(0,0);
       //PRIMER BLOQUE
       //----------------------------------------------------------------------
       menu_acc.createChild(View, "seccion1", {label:"OpenOffice"});

                 //Sección 1 - Item 1
                 menu_acc.seccion1.createChild(Button, "s1_boton1", {_x:0, _y:0});
                 with(menu_acc.seccion1.s1_boton1){
                        label = "WRITER - Procesador de textos";
                        setSize(198,30);
                 }
                 menu_acc.seccion1.s1_boton1.onPress = function () {
                        _root.localizacion_txt.text = "Ofimática -> OpenOffice -> Writer";
                        gotoAndStop("writer");
                 }

                 //Sección 1 - Item 2
                 menu_acc.seccion1.createChild(Button, "s1_boton2", {_x:0, _y:30});
                 menu_acc.seccion1.s1_boton2.label = "DRAW - Dibujo";
                 menu_acc.seccion1.s1_boton2.setSize(198,30);
                 menu_acc.seccion1.s1_boton2.onPress = function () {
                        _root.localizacion_txt.text = "Ofimática -> OpenOffice -> Draw";
                        gotoAndStop("draw");
                 }

                 //Sección 1 - Item 3
                 menu_acc.seccion1.createChild(Button, "s1_boton3", {_x:0, _y:60});
                 menu_acc.seccion1.s1_boton3.label = "IMPRESS - Presentaciones";
                 menu_acc.seccion1.s1_boton3.setSize(198,30);
                 menu_acc.seccion1.s1_boton3.onPress = function () {
                        _root.localizacion_txt.text = "Ofimática -> OpenOffice -> Impress";
                        gotoAndStop("impress");
                 }

                 //Sección 1 - Item 4
                 menu_acc.seccion1.createChild(Button, "s1_boton4", {_x:0, _y:90});
                 menu_acc.seccion1.s1_boton4.label = "CALC - Hoja de Cálculo";
                 menu_acc.seccion1.s1_boton4.setSize(198,30);
                 menu_acc.seccion1.s1_boton4.onPress = function () {
                        _root.localizacion_txt.text = "Ofimática -> OpenOffice -> Calc";
                        gotoAndStop("calc");
                 }

                 //Sección 1 - Item 5
                 menu_acc.seccion1.createChild(Button, "s1_boton5", {_x:0, _y:120});
                 menu_acc.seccion1.s1_boton5.label = "BASE - Base de Datos";
                 menu_acc.seccion1.s1_boton5.setSize(198,30);
                 menu_acc.seccion1.s1_boton5.onPress = function () {
                        _root.localizacion_txt.text = "Ofimática -> OpenOffice -> Base";
                        gotoAndStop("base");
                 }




                                                   bitCoach::Juan Bautista Cascallar Lorenzo::Página 8
//SEGUNDO BLOQUE
       //----------------------------------------------------------------------
       menu_acc.createChild(View, "seccion2", {label:"Microsoft Office"});

              //Sección 2 - Item 1
              menu_acc.seccion2.createChild(Button, "s2_boton1", {_x:0, _y:0});
              with(menu_acc.seccion2.s2_boton1){
                     label = "WORD - Procesador de textos";
                     setSize(198,30);
              }
              menu_acc.seccion2.s2_boton1.onPress = function () {
                     _root.texto.text="WORD";
                     _root.localizacion_txt.text = "Ofimática -> MS Office -> Word";
                     gotoAndStop("word");

              }

              //Sección 2 - Item 2
              menu_acc.seccion2.createChild(Button, "s2_boton2", {_x:0, _y:30});
              menu_acc.seccion2.s2_boton2.label = "ACCESS - Base de Datos";
              menu_acc.seccion2.s2_boton2.setSize(198,30);
              menu_acc.seccion2.s2_boton2.onPress = function () {
                     _root.texto.text="ACCESS";
                     _root.localizacion_txt.text = "Ofimática -> MS Office -> Access";
                     gotoAndStop("access");
              }

              //Sección 2 - Item 3
              menu_acc.seccion2.createChild(Button, "s2_boton3", {_x:0, _y:60});
              menu_acc.seccion2.s2_boton3.label = "EXCEL - Hoja de Cálculo";
              menu_acc.seccion2.s2_boton3.setSize(198,30);
              menu_acc.seccion2.s2_boton3.onPress = function () {
                     _root.texto.text="EXCEL";
                     _root.localizacion_txt.text = "Ofimática -> MS Office -> Excel";
                     gotoAndStop("excel");
              }

              //Sección 2 - Item 4
              menu_acc.seccion2.createChild(Button, "s2_boton4", {_x:0, _y:90});
              menu_acc.seccion2.s2_boton4.label = "POWERPOINT - Presentaciones";
              menu_acc.seccion2.s2_boton4.setSize(198,30);
              menu_acc.seccion2.s2_boton4.onPress = function () {
                     _root.texto.text="POWERPOINT";
                     _root.localizacion_txt.text = "Ofimática -> MS Office -> PowerPoint";
                     gotoAndStop("powerpoint");
              }

       //---------------------------------------------------------------------------
              // Crear un objeto detector nuevo.
       var menu_accListener:Object = new Object();
       menu_accListener.change = function() {
              // Asignar etiqueta de panel secundario a la variable.
              var selectedChild_str:String = menu_acc.selectedChild.label;
              // Llevar a cabo acciones según el elemento secundario seleccionado.
              switch (selectedChild_str) {
              case "OpenOffice":
                      //trace("Has seleccionado la opción1");
                      _root.localizacion_txt.text = "Ofimática -> OpenOffice";
                      gotoAndStop("openoffice");
                      break;
              case "Microsoft Office":
                      //trace("Has seleccionado la opción2");
                      _root.localizacion_txt.text = "Ofimática -> MS Office";
                      gotoAndStop("msoffice");
                      break;
              }
       }
       menu_acc.addEventListener("change", menu_accListener);

       acc=false;
}
//---------------------------------------------------------------------------




                                                 bitCoach::Juan Bautista Cascallar Lorenzo::Página 9
Árbol de contenido – Componente Tree 2

Para la organización de contenidos en una estructura de tipo árbol donde se pueden contraer y expandir
secciones, se ha configurado un componente de tipo Tree que se carga mediante un fichero XML.




                                                                2



import mx.controls.Tree;
this.createClassObject(mx.controls.Tree, "mnuTreeWriter", 1);
mnuTreeWriter.setSize(0,0);
//Cargamos el XML
xmlTree = new XML();
xmlTree.ignoreWhite = true;
xmlTree.onLoad = function(success) {
       if (success) {
               //Propiedades

               mnuTreeWriter.setSize(365, 190);
               mnuTreeWriter._x = 13;
               mnuTreeWriter._y = 145;
               //ESTILOS DEL COMPONENTE
               mnuTreeWriter.vScrollPolicy = "auto"; // use "on", "off" or "auto"
               mnuTreeWriter.setStyle("openEasing", mx.transitions.easing.Back.easeOut);
               mnuTreeWriter.setStyle("borderStyle","none");
               mnuTreeWriter.setStyle("themeColor","haloOrange");


               //Llenamos el menu
               mnuTreeWriter.dataProvider = xmlTree;
               //Eventos
               mnuTreeWriter.addEventListener("change", alSeleccionar);
       }
}
xmlTree.load("Ofimatica/OpenOffice/arbolWriter.xml");


alSeleccionar = new Object();
alSeleccionar.change = function(evento) {
       var seleccion = evento.target.selectedNode;
       //Si es una carpeta...
       if (mnuTreeWriter.getIsBranch(seleccion)){
               //La cerramos si esta abierta
               if (mnuTreeWriter.getIsOpen(seleccion)){
                      mnuTreeWriter.setIsOpen(seleccion, false, true);
               }
               //La abrimos si esta cerrada
               else{
                      mnuTreeWriter.setIsOpen(seleccion, true, true);
               }
       }
       //Si es un vínculo...
       else{
               getURL(seleccion.attributes.dirurl, "_blank");
       }
}



                                                 bitCoach::Juan Bautista Cascallar Lorenzo::Página 10
arbolWriter.xml

<?xml version="1.0" encoding="UTF-8"?>

<nodo label = "Introducción a OpenOffice Writer" >
        <nodo label = "Práctica 1 - Título de la práctica 01 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 2 - Título de la práctica 02 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 3 - Título de la práctica 03 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
</nodo>

<nodo label = "Ingreso y edición de texto" >
        <nodo label = "Práctica 4 - Título de la   práctica 04 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf"    />
        <nodo label = "Práctica 5 - Título de la   práctica 05 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf"    />
        <nodo label = "Práctica 6 - Título de la   práctica 06 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf"    />
</nodo>

<nodo label = "Formateo de texto" >
        <nodo label = "Práctica 7 - Título de la   práctica 07 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf"    />
        <nodo label = "Práctica 8 - Título de la   práctica 08 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf"    />
        <nodo label = "Práctica 9 - Título de la   práctica 09 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf"    />
</nodo>

<nodo label = "Manejo de Imágenes en el texto" >
        <nodo label = "Práctica 10 - Título de la práctica 10 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 11 - Título de la práctica 11 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 12 - Título de la práctica 12 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
</nodo>

<nodo label = "Configuración de página e impresión de texto"    >
        <nodo label = "Práctica 13 - Título de la práctica 13   (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 14 - Título de la práctica 14   (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 15 - Título de la práctica 15   (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
</nodo>

<nodo label = "Uso de Tablas" >
        <nodo label = "Práctica 16 - Título de la práctica 16 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 17 - Título de la práctica 17 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 18 - Título de la práctica 18 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
</nodo>

<nodo label = "Combinar correspondencia" >
        <nodo label = "Práctica 19 - Título de la práctica 19 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 20 - Título de la práctica 20 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 21 - Título de la práctica 21 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
</nodo>

<nodo label = "Configuración de OpenOffice Writer" >
        <nodo label = "Práctica 22 - Título de la práctica 22 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 23 - Título de la práctica 23 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
        <nodo label = "Práctica 24 - Título de la práctica 24 (tipo fichero: pdf)"
dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" />
</nodo>




                                                   bitCoach::Juan Bautista Cascallar Lorenzo::Página 11
Efecto mostrar imagen (cuadricular-descuadricular) 3

En la mayor parte de las áreas no hay contenido disponible y en algunas de estas áreas se ha incluido una
animación donde una imagen va apareciendo “pixel a pixel” (en realidad cuadrito a cuadrito) hasta que se
muestre por completo.




                                                          3



arrayCuadritos = new Array();

function cuadricular(){
       h = 0; v = 1;
       for(cont=0;cont<1995;cont++){
               arrayCuadritos[cont] = this.cuadro_mc.duplicateMovieClip("cuadrito"+cont, cont);
               if((cont%95) == 0){
                      h = 0; v++;
               }
               arrayCuadritos[cont]._x = 5 * h;
               arrayCuadritos[cont]._y = 5 * v;
               h++;
       }
}

cuadricular();
bandear = true;
function descuadricular(){
       longitud = arrayCuadritos.length;
       posicion = Math.floor (Math.random () * longitud);
       if(longitud > 0){
               arrayCuadritos[posicion].removeMovieClip();
               arrayCuadritos.splice(posicion,1);
               //trace(arrayCuadritos.length);
       }else{
               clearInterval(intervalId);
       }
}

intervalId = setInterval(this, "descuadricular", 1);




                                                  bitCoach::Juan Bautista Cascallar Lorenzo::Página 12
Bloque o barra de Navegación Inferior (Zona 3)

La zona 3 contiene un bloque o barra inferior que agrupa una serie de funcionalidades agrupadas en un clip
de película.




    Estos dos botones permiten mostrar u ocultar la barra de iconos inferior.

on(press){
       _root.barraInferior_mc._visible = false;
}




             Pinchando en este botón regresamos al “Home” de la aplicación independientemente de la
sección en la que nos encontremos en cada momento.

on(press){
       _root.gotoAndStop(1);
       loadMovie("Ofimatica/mainmsoffice.swf", _root.secciones_mc);
       _root.mnuHorizontal_mc.Rastro_mc._x = 38;
       _root.localizacion_txt.text = "Ofimática";
}




             Pinchando en este botón podremos leer este informe técnico en formato pdf en una ventana
nueva del navegador.
on(press){
        getURL("informe_tecnico.pdf",_blank);
}



               Pinchando en este botón podemos visualizar y escuchar en una ventana de tipo PopUp
(componente Window), la reproducción de un video, en modo Streaming (el video se reproduce a media
que se va descargando), creado en principio con el programa CamStudio (formato .avi) y luego importado
a flash donde se realiza una codificación/compresión a formato .flv (flash video).


on(press){
       import mx.containers.Window;
       import mx.managers.PopUpManager;
       var   ventana_video:MovieClip    =  PopUpManager.createPopUp(_root,           Window,   true,   {_x:-
500,contentPath:"videoExplicativo/video_explicativo.swf"});

        //--- Cuando se completa la carga del PopUp ---
        alCrear = Object();
        alCrear.complete = function(evento){
               ventana_video.setSize(600,620);
               ventana_video._h
               ventana_video._x = 10;
               ventana_video._y = 10;
               ventana_video.closeButton = true;
               ventana_video.title = "VIDEO - FUNCIONAMIENTO DE LA APLICACIÓN";
        }
        ventana_video.addEventListener("complete", alCrear);

        //--- Cuando hacemos clic en el botón para cerrar el PopUp ---
        alCerrar = Object();
        alCerrar.click = function(evento){
               evento.target.deletePopUp();
        }
        ventana_video.addEventListener("click", alCerrar);
}


                                                     bitCoach::Juan Bautista Cascallar Lorenzo::Página 13
Como interfaz de video se ha utilizado el skin ArcticExternalAll.




         Pinchando en este botón accedemos a una zona donde se incluirán todo tipo de recursos web
como direcciones ULR, videotutoriales YouTube, página oficiales de ayuda online, Blogs de Expertos, Wikis
temáticas, …, que sirvan de consulta para una mejor comprensión de las prácticas resueltas pertenecientes
a cada una de las categorías.




                                                    bitCoach::Juan Bautista Cascallar Lorenzo::Página 14
Accedemos a los recursos web de cada categoría a través de botones de opción (componentes
RadioButton), agrupados bajo el mismo nombre groupName::radioGrupoWebgrafia. Dependiendo de la
opción que seleccionemos se visualizará en un componente de tipo ScrollPane el clip de pelicula
correspondiente con los contenidos.
/**
         - Componente RadioButton en la biblioteca
         - Componente ScrollPane en la biblioteca
*/
objSP02.contentPath = "ofimatica_mc";
// Crea objeto detector.
var rbListener:Object = new Object();
rbListener.click = function(evt_obj:Object){

         cad_opcion = evt_obj.target.selection;
      cad_opcion = substring(cad_opcion,22);

         if(cad_opcion == 'ofimatica_rb'){
                objSP02.contentPath = "ofimatica_mc";
      }
      if(cad_opcion == 'programacion_rb'){
                 objSP02.contentPath = "programacion_mc";
      }
      if(cad_opcion == 'redes_rb'){
                 objSP02.contentPath = "redes_mc";
      }
      if(cad_opcion == 'diseno_rb'){
                 objSP02.contentPath = "diseno_mc";
      }
}
// Añadir detector.
radioGrupoWebgrafia.addEventListener("click", rbListener);




                En este caso se reproduce y controla un archivo de audio .mp3 mediante la configuración de
los componentes MediaDisplay:: miReproductor y MediaController:: miControlador.

//La ruta al archivo que deseamos reproducir
miReproductor.contentPath = "musica_fondo.mp3";
//asociamos el reproductor al controlador
miReproductor.associateController(miControlador);
//Expandimos los controles
miControlador.controllerPolicy = "on";

miControlador._width = 140;
miControlador._height = 35;
miControlador._x = 390;
miControlador._y = 3.4;




                                                     bitCoach::Juan Bautista Cascallar Lorenzo::Página 15
Barra de Progreso (componente ProgressBar)

Se ha asociado a la zona principal de visualización de contenidos (clip::secciones_mc) una barra de
progreso para que muestre el progreso de carga de contenido sobre todo cuando el contenido es de gran
tamaño y pueda retrasar la ejecución de la aplicación. Para probar el funcionamiento de la barra de
progreso se ha simulado una descarga a 56K(4.7 KB/s).




El bloque de código asociado a la barra de progreso se ha almacenado en un archivo .as de forma que
pueda incluirse desde cualquier ubicación mediante #include.

#include "FLA_includes/barraProgreso.as"




barraProgreso_secciones_mc();

_global.barraProgreso_secciones_mc = function():Void{
       //Atacheamos el componente
       attachMovie("ProgressBar", "barraProgreso", 1);
       //Propiedades
       barraProgreso._x = 322;
       barraProgreso._y = 480;
       barraProgreso.mode = "polled";
       barraProgreso.source = _root.secciones_mc;

       //Listener para cuando esta cargando el archivo swf externo en el movieClip secciones_mc
       var bpListener:Object = new Object();
       bpListener.progress = function(evento) {
              barraProgreso.setProgress(getBytesLoaded, getBytesTotal);
       }

       //Listener para cuando se acaba de cargar el archivo swf externo.
       bpListener.complete = function(evento) {
              removeMovieClip(barraProgreso);
       }

       //Eventos
       barraProgreso.addEventListener("progress", bpListener ); //Mientras carga.
       barraProgreso.addEventListener("complete", bpListener ); //Al terminar la carga.
}


                                                   bitCoach::Juan Bautista Cascallar Lorenzo::Página 16

Mais conteúdo relacionado

Mais procurados

jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojubacalo
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSPjubacalo
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajaxjubacalo
 
Java HashMap
Java HashMapJava HashMap
Java HashMapjubacalo
 
Ejercicios de programacion concurrente
Ejercicios de programacion concurrenteEjercicios de programacion concurrente
Ejercicios de programacion concurrenteedgar muñoz
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenadosguesta403644
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Juan Manuel
 
Django: el framework web definitivo
Django: el framework web definitivoDjango: el framework web definitivo
Django: el framework web definitivoAnder Beaskoetxea
 
Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012Gustavo Inocente Chacón
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)Darwin Durand
 
Php04 estructuras control
Php04 estructuras controlPhp04 estructuras control
Php04 estructuras controlJulio Pari
 
Php excel
Php excelPhp excel
Php excelpcuseth
 
Programa simple java julian
Programa simple java julianPrograma simple java julian
Programa simple java juliancoruniversitec
 
DescripcióN De Codigo Y Interfaz
DescripcióN De Codigo Y InterfazDescripcióN De Codigo Y Interfaz
DescripcióN De Codigo Y Interfazluisfe
 
6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)Laura Folgado Galache
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)José Toro
 
7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncronaLaura Folgado Galache
 

Mais procurados (20)

jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Funciones
FuncionesFunciones
Funciones
 
Java HashMap
Java HashMapJava HashMap
Java HashMap
 
Ejercicios de programacion concurrente
Ejercicios de programacion concurrenteEjercicios de programacion concurrente
Ejercicios de programacion concurrente
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Django: el framework web definitivo
Django: el framework web definitivoDjango: el framework web definitivo
Django: el framework web definitivo
 
Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)
 
Php04 estructuras control
Php04 estructuras controlPhp04 estructuras control
Php04 estructuras control
 
Php excel
Php excelPhp excel
Php excel
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Programa simple java julian
Programa simple java julianPrograma simple java julian
Programa simple java julian
 
DescripcióN De Codigo Y Interfaz
DescripcióN De Codigo Y InterfazDescripcióN De Codigo Y Interfaz
DescripcióN De Codigo Y Interfaz
 
6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
 
7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona
 

Destaque

Tienda virtual php_mysql
Tienda virtual php_mysqlTienda virtual php_mysql
Tienda virtual php_mysqljubacalo
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundojubacalo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DBjubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSPjubacalo
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadorajubacalo
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oraclejubacalo
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.jubacalo
 
Java ArrayList Iterator
Java ArrayList IteratorJava ArrayList Iterator
Java ArrayList Iteratorjubacalo
 
Matrices02
Matrices02Matrices02
Matrices02jubacalo
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datosjubacalo
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámicajubacalo
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jubacalo
 
Textura de agua
Textura de aguaTextura de agua
Textura de aguajubacalo
 

Destaque (19)

Tienda virtual php_mysql
Tienda virtual php_mysqlTienda virtual php_mysql
Tienda virtual php_mysql
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.
 
Java ArrayList Iterator
Java ArrayList IteratorJava ArrayList Iterator
Java ArrayList Iterator
 
Gráficos
GráficosGráficos
Gráficos
 
Matrices02
Matrices02Matrices02
Matrices02
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datos
 
Solver
SolverSolver
Solver
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámica
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
 
Word VBA
Word VBAWord VBA
Word VBA
 
Textura de agua
Textura de aguaTextura de agua
Textura de agua
 

Semelhante a Práctica Completa en Flash – ActionScript

Gestion de la Memoria Final!!!!!.docx
Gestion de la Memoria Final!!!!!.docxGestion de la Memoria Final!!!!!.docx
Gestion de la Memoria Final!!!!!.docxfabianTorresPrez
 
UDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextualUDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextualAnder Martinez
 
Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005Jose Ponce
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Ricard Luquero
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 
Programa
ProgramaPrograma
Programapau
 
algoritmos en R Studio
algoritmos en R Studioalgoritmos en R Studio
algoritmos en R Studiojuan198
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresChristian Lara
 
Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4Robert Wolf
 
Programando bajo el paradigma orientado a objetos, parte uno
Programando bajo el paradigma orientado a objetos, parte unoProgramando bajo el paradigma orientado a objetos, parte uno
Programando bajo el paradigma orientado a objetos, parte unoIng-D-SW-TorresKhano--ME
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5Plain Concepts
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3Milaly
 

Semelhante a Práctica Completa en Flash – ActionScript (20)

Programación i
Programación iProgramación i
Programación i
 
Taller WP8 en TEC de Monterrey
Taller WP8 en TEC de MonterreyTaller WP8 en TEC de Monterrey
Taller WP8 en TEC de Monterrey
 
Computación 3
Computación 3Computación 3
Computación 3
 
Gestion de la Memoria Final!!!!!.docx
Gestion de la Memoria Final!!!!!.docxGestion de la Memoria Final!!!!!.docx
Gestion de la Memoria Final!!!!!.docx
 
UDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextualUDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextual
 
Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
andrea
andreaandrea
andrea
 
Programa
ProgramaPrograma
Programa
 
Java tema06a
Java tema06aJava tema06a
Java tema06a
 
algoritmos en R Studio
algoritmos en R Studioalgoritmos en R Studio
algoritmos en R Studio
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladores
 
Manual Tecnico
Manual TecnicoManual Tecnico
Manual Tecnico
 
Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4
 
Tema 2 objetos_jlabel_jtextfield_jbutton
Tema 2 objetos_jlabel_jtextfield_jbuttonTema 2 objetos_jlabel_jtextfield_jbutton
Tema 2 objetos_jlabel_jtextfield_jbutton
 
Programando bajo el paradigma orientado a objetos, parte uno
Programando bajo el paradigma orientado a objetos, parte unoProgramando bajo el paradigma orientado a objetos, parte uno
Programando bajo el paradigma orientado a objetos, parte uno
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 

Mais de jubacalo

MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagenjubacalo
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2jubacalo
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBancojubacalo
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
Escenarios
EscenariosEscenarios
Escenariosjubacalo
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionalesjubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 

Mais de jubacalo (7)

MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Escenarios
EscenariosEscenarios
Escenarios
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionales
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 

Último

NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfUPTAIDELTACHIRA
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOBRIGIDATELLOLEONARDO
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptxRigoTito
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdfMiguelHuaman31
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONALMiNeyi1
 

Último (20)

NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 

Práctica Completa en Flash – ActionScript

  • 1. Curso: Diseño y Programación en Flash (UNED) – Práctica Completa ::Versión de Flash::Adobe Flash CS3 Professional ::Lenguaje de Programación::ActionScript 2.0 ::Técnicas y recursos utilizados:: ::Componentes:: Accordion, Button, ProgressBar, RadioButton, ScrollPane, Tree, MediaDisplay, MediaController, Window, etc. ::Video:: CamStudio (herramienta para grabar la actividad de la pantalla del PC a un archivo .AVI o .SWF), Importar e implementar video streaming. ::Audio:: Reproducir y controlar música. ::Capas Máscara y Capas Guía:: :: loadMovie:: Fragmentación de la aplicación en varios archivos externos con el fin de reducir peso y tiempos de carga. :: Clip de Película (MovieClip)::Crear piezas de animación reutilizables con sus propias líneas de tiempo. ::XML:: Implementación de archivos XML para la carga de los ítems de los menús de navegación horizontal y vertical, así como para la carga de los componentes Tree. ::#include:: Cargar ActionScript fuera de la película usando un archivo .as con el fin de reutilizar bloques de código. ::import:: POO. Separar la funcionalidad que queremos realizar y almacenarla en clases independientes de forma que podamos instanciar (crear objetos de dicha clase) desde diferentes sitios. Introducción El objetivo de esta práctica es aplicar de forma integral los aspectos básicos de flash en una aplicación web, realizada totalmente en flash, que permite clasificar y acceder a una serie de prácticas resueltas relacionadas con materias informáticas. bitCoach::Juan Bautista Cascallar Lorenzo::Página 1
  • 2. Estructura principal de la Aplicación La aplicación consta de tres áreas principales. En la zona 1 se carga un menú de navegación horizontal (MNH) a través de cuyos ítems se accede a los bloques de carácter más global de la aplicación (Ofimática, Programación, Redes,…). En la zona 2 se cargará, según la opción de menú MNH seleccionada, la película externa correspondiente (loadMovie) a cada sección. Finalmente la zona 3 contiene un bloque o barra inferior que agrupa una serie de funcionalidades en un clip de película. 1 2 3 bitCoach::Juan Bautista Cascallar Lorenzo::Página 2
  • 3. Menú de navegación horizontal MNH Los ítems de este menú se cargan a través de un fichero XML (HNav_Menu.xml). De esta forma actualizando este fichero podremos añadir más secciones al menú. El fichero xml contiene los títulos de los ítems que formarán el menú así como las rutas a los ficheros .swf externos que se cargarán mediante loadMovie dependiendo de la opción seleccionada. HNav_Menu.xml <?xml version="1.0" encoding="UTF-8"?> <menu> <item titulo="Ofimática" src="Ofimatica/mainmsoffice.swf"/> <item titulo="Programación" src="Programacion/mainprogramacion.swf"/> <item titulo="Redes" src="Redes/mainredes.swf"/> <item titulo="Diseño" src="Diseno/maindiseno.swf"/> </menu> A continuación se añade el código ActionScript que nos permite cargar y operar con el menú. Básicamente se carga y se procesa el fichero XML, se posicionan los ítems del menú y en función de la opción de menú que seleccionemos se cargará el fichero .swf externo correspondiente en el área de visualización (clip::seccioness_mc). Otras cosas que ocurren al pulsar en una opción del menú es que se posiciona el segmento o rectángulo gris debajo de la opción seleccionada y se actualiza la información en el recuadro de texto mostrando el ítem seleccionado. El código implementa sobre cada ítem del menú, además del evento onPress, los eventos onRollOver y onRollOut de forma que al situar el cursor del ratón sobre un ítem del menú, el texto se pondrá en negrita hasta que retiremos el cursor. //---------------------------------------------------------------------------- var t=0 Rastro_mc._x = 38; myTextFormat = new TextFormat(); //---------------------------------------------------------------------------- menuXml = new XML(); menuXml.ignoreWhite = true; menuXml.onLoad = function(exito) { if (exito) { menuItem = menuXml.firstChild.childNodes; for (var i = 0; i < menuItem.length; i++) { TITULO = menuItem[i].attributes.titulo; SRC = menuItem[i].attributes.src; posicionar(); }//Fin for }//Fin if }//Fin function menuXml.load("HNav_Menu/HNav_Menu.xml"); bitCoach::Juan Bautista Cascallar Lorenzo::Página 3
  • 4. //---------------------------------------------------------------------------- posicionar = function():Void{ if(t <= menuItem.length){ this.attachMovie("item_mc", "item_mc"+t, t); switch (t) { case 0: this["item_mc"+t]._x = 10; break; case 1: this["item_mc"+t]._x = 80; break; case 2: this["item_mc"+t]._x = 170; break; default: this["item_mc"+t]._x = 220; }//fin del switch //--- this["item_mc"+t]._y = 15; this["item_mc"+t].pelicula = SRC; this["item_mc"+t].etiqueta_txt.text = TITULO; //--- //BOTONES - ONPRESS this["item_mc"+t].Rectangulo_btn.onPress = function(){ if(this._parent.etiqueta_txt.text == "Ofimática"){ _root.localizacion_txt.text = "Ofimática"; Rastro_mc._x = 38; loadMovie(this._parent.pelicula,_root.secciones_mc); barraProgreso_secciones_mc(); }else if(this._parent.etiqueta_txt.text == "Programación"){ _root.localizacion_txt.text = "Programación"; Rastro_mc._x = 118; loadMovie(this._parent.pelicula,_root.secciones_mc); barraProgreso_secciones_mc(); }else if(this._parent.etiqueta_txt.text == "Redes"){ _root.localizacion_txt.text = "Redes"; Rastro_mc._x = 186; loadMovie(this._parent.pelicula,_root.secciones_mc); barraProgreso_secciones_mc(); }else if(this._parent.etiqueta_txt.text == "Diseño"){ _root.localizacion_txt.text = "Diseño"; Rastro_mc._x = 240; loadMovie(this._parent.pelicula,_root.secciones_mc); barraProgreso_secciones_mc(); } }//Fin function //BOTONES - ONROLLOVER this["item_mc"+t].Rectangulo_btn.onRollOver = function(){ myTextFormat.bold = true; aplicarFormato(this); }//Fin function //BOTONES - ONROLLOUT this["item_mc"+t].Rectangulo_btn.onRollOut = function(){ myTextFormat.bold = false; aplicarFormato(this); }//Fin function t++; }//Fin if }//Fin function posicionaar aplicarFormato = function(p:Button):Void{ if(p._parent.etiqueta_txt.text == "Ofimática"){ p._parent.etiqueta_txt.setTextFormat(myTextFormat); }else if(p._parent.etiqueta_txt.text == "Programación"){ p._parent.etiqueta_txt.setTextFormat(myTextFormat); }else if(p._parent.etiqueta_txt.text == "Redes"){ p._parent.etiqueta_txt.setTextFormat(myTextFormat); }else if(p._parent.etiqueta_txt.text == "Diseño"){ p._parent.etiqueta_txt.setTextFormat(myTextFormat); } } bitCoach::Juan Bautista Cascallar Lorenzo::Página 4
  • 5. Bloque Presentación Nada más iniciar la aplicación (index.swf), se carga el fichero externo presenta.swf en la zona de visualización (secciones_mc). El bloque de presentación, el cual se ejecutará una única vez al iniciar la aplicación, incluye tres efectos. En la animación 1 aparece el nombre y apellidos con un efecto máscara. La animación 2 crea unas pompas de jabón que van ascendiendo y dispersándose por la pantalla. La animación 3 muestra un logo flash con efecto alpha. presenta.swf 1 2 3 Efecto 1 – Máscara Básicamente el efecto se consigue desplazando mediante ActionScript los clips (rectángulos de color verde) de las capas máscara en las direcciones indicadas. bitCoach::Juan Bautista Cascallar Lorenzo::Página 5
  • 6. nombre01_mc.setMask(mask_nombre01_mc); nombre02_mc.setMask(mask_nombre02_mc); apellido01_mc.setMask(mask_apellido01_mc); apellido02_mc.setMask(mask_apellido02_mc); i = 5; _root.onEnterFrame = function (){ if(mask_nombre01_mc._y < (-38)){ mask_nombre01_mc._y = mask_nombre01_mc._y + i; } if(mask_nombre02_mc._x < 10){ mask_nombre02_mc._x = mask_nombre02_mc._x + i; } if(mask_apellido01_mc._y < (-13)){ mask_apellido01_mc._y = mask_apellido01_mc._y + i; } if(mask_apellido02_mc._x < 100){ mask_apellido02_mc._x = mask_apellido02_mc._x + i; } } Efecto 2 – Pompas de jabón Básicamente se crean un número de burbujas determinado por maxGlobos, en este caso 100 llamando cada 30 milisegundos (setInterval) a la función creaGlobo(). En el cuerpo de esta función se implementa la funcionalidad para crear un duplicado del clip de película que representa la pompa de jabón (duplicateMovieClip) y configurar aleatoriamente el desplazamiento y tamaño de la burbuja mediante las propiedades del clip _x (coordenada x del clip), _y (coordenada y del clip), _xscale (escala horizontal) y _yscale (escala vertical). maxGlobos = 100; // Máximo de Globos que se crean. nivel = 1; //Llama a la función "creaGlobo" cada 30 milisegundos. otroGlobo = setInterval(creaGlobo,30); //--Función que crea una burbuja----------------------- function creaGlobo() { nivel++; nivelglobon++; duplicateMovieClip (globo, "globo"+nivel, nivel); u= random(80); w = random(150); sx = random(120)+35; setProperty ("globo"+nivel, _x,250+w); setProperty ("globo"+nivel, _y,400+u); setProperty ("globo"+nivel, _xscale,sx); setProperty ("globo"+nivel, _yscale,sx); if(nivel == maxGlobos){ //Elimina el setInterval para que no siga llamando a la función "creaGlobo". clearInterval(otroGlobo); } } Efecto 3 – Logo flash con efecto alpha logo_flash_mc.onEnterFrame = function() { if(this._alpha < 70){ this._alpha += 2; }else { // eliminamos el loop delete this.onEnterFrame; } } bitCoach::Juan Bautista Cascallar Lorenzo::Página 6
  • 7. Sección “Ofimática” Los contenidos de la sección de “Ofimática” están organizados y accesibles mediante un menú vertical creado a partir de una instancia del componente Accordion 1. La ventaja de este componente, configurado como menú, es que nos permite mostrar u ocultar grupos de ítems en secciones pinchando en la pestaña correspondiente. Para añadir los ítems de menú a cada sección se han creado e incorporado botones (componentes tipo Button), de forma que accederemos a los distintos contenidos pinchando (evento onPress) en cada uno de ellos. Por ejemplo, cuando pinchamos en el botón "WRITER - Procesador de textos" iremos al fotograma etiquetado como “writer”, mediante gotoAndStop("writer"), que visualiza el contenido asociado. Lo mismo para los demás ítems del menú. El contenido se carga en un componente de tipo ScrollPane, por ejemplo, objSP01.contentPath = "writer_mc". if(!objSP01){ this.createClassObject(mx.containers.ScrollPane, "objSP01", 1); } objSP01.move(209.3, 0); objSP01.setSize(530, 425); objSP01.contentPath = "writer_mc"; mainmsoffice.swf 1 2 bitCoach::Juan Bautista Cascallar Lorenzo::Página 7
  • 8. Menú de tipo Acordeón import mx.core.View; import mx.controls.Label; import mx.controls.Button; if(objSP01){ objSP01.removeMovieClip(); } /*======================================================================= MENÚ ACCORDION =======================================================================*/ stop(); _global.acc = true; if(acc==true){ menu_acc.setSize(200, 300); menu_acc.move(0,0); //PRIMER BLOQUE //---------------------------------------------------------------------- menu_acc.createChild(View, "seccion1", {label:"OpenOffice"}); //Sección 1 - Item 1 menu_acc.seccion1.createChild(Button, "s1_boton1", {_x:0, _y:0}); with(menu_acc.seccion1.s1_boton1){ label = "WRITER - Procesador de textos"; setSize(198,30); } menu_acc.seccion1.s1_boton1.onPress = function () { _root.localizacion_txt.text = "Ofimática -> OpenOffice -> Writer"; gotoAndStop("writer"); } //Sección 1 - Item 2 menu_acc.seccion1.createChild(Button, "s1_boton2", {_x:0, _y:30}); menu_acc.seccion1.s1_boton2.label = "DRAW - Dibujo"; menu_acc.seccion1.s1_boton2.setSize(198,30); menu_acc.seccion1.s1_boton2.onPress = function () { _root.localizacion_txt.text = "Ofimática -> OpenOffice -> Draw"; gotoAndStop("draw"); } //Sección 1 - Item 3 menu_acc.seccion1.createChild(Button, "s1_boton3", {_x:0, _y:60}); menu_acc.seccion1.s1_boton3.label = "IMPRESS - Presentaciones"; menu_acc.seccion1.s1_boton3.setSize(198,30); menu_acc.seccion1.s1_boton3.onPress = function () { _root.localizacion_txt.text = "Ofimática -> OpenOffice -> Impress"; gotoAndStop("impress"); } //Sección 1 - Item 4 menu_acc.seccion1.createChild(Button, "s1_boton4", {_x:0, _y:90}); menu_acc.seccion1.s1_boton4.label = "CALC - Hoja de Cálculo"; menu_acc.seccion1.s1_boton4.setSize(198,30); menu_acc.seccion1.s1_boton4.onPress = function () { _root.localizacion_txt.text = "Ofimática -> OpenOffice -> Calc"; gotoAndStop("calc"); } //Sección 1 - Item 5 menu_acc.seccion1.createChild(Button, "s1_boton5", {_x:0, _y:120}); menu_acc.seccion1.s1_boton5.label = "BASE - Base de Datos"; menu_acc.seccion1.s1_boton5.setSize(198,30); menu_acc.seccion1.s1_boton5.onPress = function () { _root.localizacion_txt.text = "Ofimática -> OpenOffice -> Base"; gotoAndStop("base"); } bitCoach::Juan Bautista Cascallar Lorenzo::Página 8
  • 9. //SEGUNDO BLOQUE //---------------------------------------------------------------------- menu_acc.createChild(View, "seccion2", {label:"Microsoft Office"}); //Sección 2 - Item 1 menu_acc.seccion2.createChild(Button, "s2_boton1", {_x:0, _y:0}); with(menu_acc.seccion2.s2_boton1){ label = "WORD - Procesador de textos"; setSize(198,30); } menu_acc.seccion2.s2_boton1.onPress = function () { _root.texto.text="WORD"; _root.localizacion_txt.text = "Ofimática -> MS Office -> Word"; gotoAndStop("word"); } //Sección 2 - Item 2 menu_acc.seccion2.createChild(Button, "s2_boton2", {_x:0, _y:30}); menu_acc.seccion2.s2_boton2.label = "ACCESS - Base de Datos"; menu_acc.seccion2.s2_boton2.setSize(198,30); menu_acc.seccion2.s2_boton2.onPress = function () { _root.texto.text="ACCESS"; _root.localizacion_txt.text = "Ofimática -> MS Office -> Access"; gotoAndStop("access"); } //Sección 2 - Item 3 menu_acc.seccion2.createChild(Button, "s2_boton3", {_x:0, _y:60}); menu_acc.seccion2.s2_boton3.label = "EXCEL - Hoja de Cálculo"; menu_acc.seccion2.s2_boton3.setSize(198,30); menu_acc.seccion2.s2_boton3.onPress = function () { _root.texto.text="EXCEL"; _root.localizacion_txt.text = "Ofimática -> MS Office -> Excel"; gotoAndStop("excel"); } //Sección 2 - Item 4 menu_acc.seccion2.createChild(Button, "s2_boton4", {_x:0, _y:90}); menu_acc.seccion2.s2_boton4.label = "POWERPOINT - Presentaciones"; menu_acc.seccion2.s2_boton4.setSize(198,30); menu_acc.seccion2.s2_boton4.onPress = function () { _root.texto.text="POWERPOINT"; _root.localizacion_txt.text = "Ofimática -> MS Office -> PowerPoint"; gotoAndStop("powerpoint"); } //--------------------------------------------------------------------------- // Crear un objeto detector nuevo. var menu_accListener:Object = new Object(); menu_accListener.change = function() { // Asignar etiqueta de panel secundario a la variable. var selectedChild_str:String = menu_acc.selectedChild.label; // Llevar a cabo acciones según el elemento secundario seleccionado. switch (selectedChild_str) { case "OpenOffice": //trace("Has seleccionado la opción1"); _root.localizacion_txt.text = "Ofimática -> OpenOffice"; gotoAndStop("openoffice"); break; case "Microsoft Office": //trace("Has seleccionado la opción2"); _root.localizacion_txt.text = "Ofimática -> MS Office"; gotoAndStop("msoffice"); break; } } menu_acc.addEventListener("change", menu_accListener); acc=false; } //--------------------------------------------------------------------------- bitCoach::Juan Bautista Cascallar Lorenzo::Página 9
  • 10. Árbol de contenido – Componente Tree 2 Para la organización de contenidos en una estructura de tipo árbol donde se pueden contraer y expandir secciones, se ha configurado un componente de tipo Tree que se carga mediante un fichero XML. 2 import mx.controls.Tree; this.createClassObject(mx.controls.Tree, "mnuTreeWriter", 1); mnuTreeWriter.setSize(0,0); //Cargamos el XML xmlTree = new XML(); xmlTree.ignoreWhite = true; xmlTree.onLoad = function(success) { if (success) { //Propiedades mnuTreeWriter.setSize(365, 190); mnuTreeWriter._x = 13; mnuTreeWriter._y = 145; //ESTILOS DEL COMPONENTE mnuTreeWriter.vScrollPolicy = "auto"; // use "on", "off" or "auto" mnuTreeWriter.setStyle("openEasing", mx.transitions.easing.Back.easeOut); mnuTreeWriter.setStyle("borderStyle","none"); mnuTreeWriter.setStyle("themeColor","haloOrange"); //Llenamos el menu mnuTreeWriter.dataProvider = xmlTree; //Eventos mnuTreeWriter.addEventListener("change", alSeleccionar); } } xmlTree.load("Ofimatica/OpenOffice/arbolWriter.xml"); alSeleccionar = new Object(); alSeleccionar.change = function(evento) { var seleccion = evento.target.selectedNode; //Si es una carpeta... if (mnuTreeWriter.getIsBranch(seleccion)){ //La cerramos si esta abierta if (mnuTreeWriter.getIsOpen(seleccion)){ mnuTreeWriter.setIsOpen(seleccion, false, true); } //La abrimos si esta cerrada else{ mnuTreeWriter.setIsOpen(seleccion, true, true); } } //Si es un vínculo... else{ getURL(seleccion.attributes.dirurl, "_blank"); } } bitCoach::Juan Bautista Cascallar Lorenzo::Página 10
  • 11. arbolWriter.xml <?xml version="1.0" encoding="UTF-8"?> <nodo label = "Introducción a OpenOffice Writer" > <nodo label = "Práctica 1 - Título de la práctica 01 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 2 - Título de la práctica 02 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 3 - Título de la práctica 03 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> </nodo> <nodo label = "Ingreso y edición de texto" > <nodo label = "Práctica 4 - Título de la práctica 04 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 5 - Título de la práctica 05 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 6 - Título de la práctica 06 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> </nodo> <nodo label = "Formateo de texto" > <nodo label = "Práctica 7 - Título de la práctica 07 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 8 - Título de la práctica 08 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 9 - Título de la práctica 09 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> </nodo> <nodo label = "Manejo de Imágenes en el texto" > <nodo label = "Práctica 10 - Título de la práctica 10 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 11 - Título de la práctica 11 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 12 - Título de la práctica 12 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> </nodo> <nodo label = "Configuración de página e impresión de texto" > <nodo label = "Práctica 13 - Título de la práctica 13 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 14 - Título de la práctica 14 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 15 - Título de la práctica 15 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> </nodo> <nodo label = "Uso de Tablas" > <nodo label = "Práctica 16 - Título de la práctica 16 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 17 - Título de la práctica 17 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 18 - Título de la práctica 18 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> </nodo> <nodo label = "Combinar correspondencia" > <nodo label = "Práctica 19 - Título de la práctica 19 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 20 - Título de la práctica 20 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 21 - Título de la práctica 21 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> </nodo> <nodo label = "Configuración de OpenOffice Writer" > <nodo label = "Práctica 22 - Título de la práctica 22 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 23 - Título de la práctica 23 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> <nodo label = "Práctica 24 - Título de la práctica 24 (tipo fichero: pdf)" dirurl="Ofimatica/OpenOffice/practXXwriter.pdf" /> </nodo> bitCoach::Juan Bautista Cascallar Lorenzo::Página 11
  • 12. Efecto mostrar imagen (cuadricular-descuadricular) 3 En la mayor parte de las áreas no hay contenido disponible y en algunas de estas áreas se ha incluido una animación donde una imagen va apareciendo “pixel a pixel” (en realidad cuadrito a cuadrito) hasta que se muestre por completo. 3 arrayCuadritos = new Array(); function cuadricular(){ h = 0; v = 1; for(cont=0;cont<1995;cont++){ arrayCuadritos[cont] = this.cuadro_mc.duplicateMovieClip("cuadrito"+cont, cont); if((cont%95) == 0){ h = 0; v++; } arrayCuadritos[cont]._x = 5 * h; arrayCuadritos[cont]._y = 5 * v; h++; } } cuadricular(); bandear = true; function descuadricular(){ longitud = arrayCuadritos.length; posicion = Math.floor (Math.random () * longitud); if(longitud > 0){ arrayCuadritos[posicion].removeMovieClip(); arrayCuadritos.splice(posicion,1); //trace(arrayCuadritos.length); }else{ clearInterval(intervalId); } } intervalId = setInterval(this, "descuadricular", 1); bitCoach::Juan Bautista Cascallar Lorenzo::Página 12
  • 13. Bloque o barra de Navegación Inferior (Zona 3) La zona 3 contiene un bloque o barra inferior que agrupa una serie de funcionalidades agrupadas en un clip de película. Estos dos botones permiten mostrar u ocultar la barra de iconos inferior. on(press){ _root.barraInferior_mc._visible = false; } Pinchando en este botón regresamos al “Home” de la aplicación independientemente de la sección en la que nos encontremos en cada momento. on(press){ _root.gotoAndStop(1); loadMovie("Ofimatica/mainmsoffice.swf", _root.secciones_mc); _root.mnuHorizontal_mc.Rastro_mc._x = 38; _root.localizacion_txt.text = "Ofimática"; } Pinchando en este botón podremos leer este informe técnico en formato pdf en una ventana nueva del navegador. on(press){ getURL("informe_tecnico.pdf",_blank); } Pinchando en este botón podemos visualizar y escuchar en una ventana de tipo PopUp (componente Window), la reproducción de un video, en modo Streaming (el video se reproduce a media que se va descargando), creado en principio con el programa CamStudio (formato .avi) y luego importado a flash donde se realiza una codificación/compresión a formato .flv (flash video). on(press){ import mx.containers.Window; import mx.managers.PopUpManager; var ventana_video:MovieClip = PopUpManager.createPopUp(_root, Window, true, {_x:- 500,contentPath:"videoExplicativo/video_explicativo.swf"}); //--- Cuando se completa la carga del PopUp --- alCrear = Object(); alCrear.complete = function(evento){ ventana_video.setSize(600,620); ventana_video._h ventana_video._x = 10; ventana_video._y = 10; ventana_video.closeButton = true; ventana_video.title = "VIDEO - FUNCIONAMIENTO DE LA APLICACIÓN"; } ventana_video.addEventListener("complete", alCrear); //--- Cuando hacemos clic en el botón para cerrar el PopUp --- alCerrar = Object(); alCerrar.click = function(evento){ evento.target.deletePopUp(); } ventana_video.addEventListener("click", alCerrar); } bitCoach::Juan Bautista Cascallar Lorenzo::Página 13
  • 14. Como interfaz de video se ha utilizado el skin ArcticExternalAll. Pinchando en este botón accedemos a una zona donde se incluirán todo tipo de recursos web como direcciones ULR, videotutoriales YouTube, página oficiales de ayuda online, Blogs de Expertos, Wikis temáticas, …, que sirvan de consulta para una mejor comprensión de las prácticas resueltas pertenecientes a cada una de las categorías. bitCoach::Juan Bautista Cascallar Lorenzo::Página 14
  • 15. Accedemos a los recursos web de cada categoría a través de botones de opción (componentes RadioButton), agrupados bajo el mismo nombre groupName::radioGrupoWebgrafia. Dependiendo de la opción que seleccionemos se visualizará en un componente de tipo ScrollPane el clip de pelicula correspondiente con los contenidos. /** - Componente RadioButton en la biblioteca - Componente ScrollPane en la biblioteca */ objSP02.contentPath = "ofimatica_mc"; // Crea objeto detector. var rbListener:Object = new Object(); rbListener.click = function(evt_obj:Object){ cad_opcion = evt_obj.target.selection; cad_opcion = substring(cad_opcion,22); if(cad_opcion == 'ofimatica_rb'){ objSP02.contentPath = "ofimatica_mc"; } if(cad_opcion == 'programacion_rb'){ objSP02.contentPath = "programacion_mc"; } if(cad_opcion == 'redes_rb'){ objSP02.contentPath = "redes_mc"; } if(cad_opcion == 'diseno_rb'){ objSP02.contentPath = "diseno_mc"; } } // Añadir detector. radioGrupoWebgrafia.addEventListener("click", rbListener); En este caso se reproduce y controla un archivo de audio .mp3 mediante la configuración de los componentes MediaDisplay:: miReproductor y MediaController:: miControlador. //La ruta al archivo que deseamos reproducir miReproductor.contentPath = "musica_fondo.mp3"; //asociamos el reproductor al controlador miReproductor.associateController(miControlador); //Expandimos los controles miControlador.controllerPolicy = "on"; miControlador._width = 140; miControlador._height = 35; miControlador._x = 390; miControlador._y = 3.4; bitCoach::Juan Bautista Cascallar Lorenzo::Página 15
  • 16. Barra de Progreso (componente ProgressBar) Se ha asociado a la zona principal de visualización de contenidos (clip::secciones_mc) una barra de progreso para que muestre el progreso de carga de contenido sobre todo cuando el contenido es de gran tamaño y pueda retrasar la ejecución de la aplicación. Para probar el funcionamiento de la barra de progreso se ha simulado una descarga a 56K(4.7 KB/s). El bloque de código asociado a la barra de progreso se ha almacenado en un archivo .as de forma que pueda incluirse desde cualquier ubicación mediante #include. #include "FLA_includes/barraProgreso.as" barraProgreso_secciones_mc(); _global.barraProgreso_secciones_mc = function():Void{ //Atacheamos el componente attachMovie("ProgressBar", "barraProgreso", 1); //Propiedades barraProgreso._x = 322; barraProgreso._y = 480; barraProgreso.mode = "polled"; barraProgreso.source = _root.secciones_mc; //Listener para cuando esta cargando el archivo swf externo en el movieClip secciones_mc var bpListener:Object = new Object(); bpListener.progress = function(evento) { barraProgreso.setProgress(getBytesLoaded, getBytesTotal); } //Listener para cuando se acaba de cargar el archivo swf externo. bpListener.complete = function(evento) { removeMovieClip(barraProgreso); } //Eventos barraProgreso.addEventListener("progress", bpListener ); //Mientras carga. barraProgreso.addEventListener("complete", bpListener ); //Al terminar la carga. } bitCoach::Juan Bautista Cascallar Lorenzo::Página 16