Foros del Web » Creando para Internet » Flash y Actionscript »

cargar swf externo con menu hecho en XML (AS3)

Estas en el tema de cargar swf externo con menu hecho en XML (AS3) en el foro de Flash y Actionscript en Foros del Web. Hola que tal, saqué un ejemplo de este tutorial , que era crear un menu dinámico con as3 y xml. Cada botón se crea y ...
  #1 (permalink)  
Antiguo 14/05/2010, 00:13
Avatar de annirami  
Fecha de Ingreso: septiembre-2009
Ubicación: Lima, Perú
Mensajes: 53
Antigüedad: 14 años, 7 meses
Puntos: 3
Mensaje cargar swf externo con menu hecho en XML (AS3)

Hola que tal, saqué un ejemplo de este tutorial, que era crear un menu dinámico con as3 y xml. Cada botón se crea y linkea mediante una lista xml. Lo que he querido agregar es que aparte de linkear y direccionar hacia una página, es que cargue un swf externo al hacer mouse_over al botón, asi como ésta imagen:



Pero esa es la parte en que no he podido resolver, aunque se como se hace una carga externa con as3 y he aplicado eso, me para saliendo error.
Aqui muestro el código:

Código actionscript:
Ver original
  1. package
  2. {
  3.     import flash.display.Sprite;
  4.     import flash.events.Event;
  5.     import flash.events.IOErrorEvent;
  6.     import flash.events.MouseEvent;
  7.     import flash.net.URLRequest;
  8.     import flash.net.URLLoader;
  9.     import flash.net.*;
  10.  
  11.     public class MenuDinamico extends Sprite
  12.     {
  13.         public var datos:XML;
  14.  
  15.         public function MenuDinamico():void
  16.         {
  17.             var loader:URLLoader = new URLLoader();
  18.             loader.addEventListener(Event.COMPLETE, cargado);
  19.             loader.addEventListener(IOErrorEvent.IO_ERROR, error);
  20.             loader.load(new URLRequest("datos.xml"));
  21.         }
  22.  
  23.         private function error(e:IOErrorEvent):void
  24.         {
  25.             trace("error al cargar el XML: " + e);
  26.         }
  27.  
  28.         private function cargado(e:Event):void
  29.         {
  30.             datos=new XML(e.target.data);
  31.             montar();
  32.         }
  33.  
  34.         private function montar():void
  35.         {
  36.             var boton:ElementoMenu;
  37.             for (var i:uint = 0; i < datos.elementos.elemento.length(); i++)
  38.             {
  39.                 boton = new ElementoMenu();
  40.                 boton.Texto_txt.text=datos.elementos.elemento[i].titulo;//llama texto de xml
  41.                 boton.enlace=datos.elementos.elemento[i].enlace;//llama enlace de xml
  42.                 boton.movie=datos.elementos.elemento[i].movie;//llama swf xml
  43.                 boton.x=i*200;
  44.                 boton.y=5;
  45.  
  46.                 boton.buttonMode=true;
  47.                 boton.mouseChildren=false;
  48.                 boton.addEventListener(MouseEvent.CLICK, navegar);
  49.                 //boton para llamar swf
  50.                 boton.addEventListener(MouseEvent.MOUSE_OVER, cargarswf);
  51.                 addChild(boton);
  52.             }
  53.         }
  54.         private function navegar(e:MouseEvent):void
  55.         {
  56.             navigateToURL(new URLRequest(e.currentTarget.enlace), "_blank");
  57.         }
  58.  
  59.         private function cargarswf(e:MouseEvent):void
  60.         {
  61.             /*aqui es donde he querido cargar y
  62.             visualizar el swf externo...y no he podido*/
  63.             trace(e.currentTarget.movie);
  64.         }
  65.     }
  66. }

Espero me hayan entendido bien, y puedan ayudarme.
saludos y gracias :]
  #2 (permalink)  
Antiguo 14/05/2010, 02:10
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 16 años
Puntos: 5
Respuesta: cargar swf externo con menu hecho en XML (AS3)

Aunque no dices nada, voy a obviar que el rollOver se hace correctamente y que la función cargarswf se ejecuta, mostrando la ruta del swf.

Código actionscript:
Ver original
  1. private function cargarswf(e:MouseEvent):void
  2. {
  3.         var loader:Loader = new Loader();
  4.         var ureq:URLRequest = new URLRequest(e.target.movie);
  5.         loader.addEventListener(Event.COMPLETE, swfHandler);
  6.         loader.load(ureq);
  7. }
  8.  
  9. private function swfHandler(e:Event):void {
  10.         addChild(e.target);
  11. }

Te dejo para tí los removechilds pertinentes ;)
  #3 (permalink)  
Antiguo 14/05/2010, 14:16
Avatar de annirami  
Fecha de Ingreso: septiembre-2009
Ubicación: Lima, Perú
Mensajes: 53
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: cargar swf externo con menu hecho en XML (AS3)

Hola, que tal...gracias por responder. Algo así como tú hiciste, había puesto en esa parte del código, sólo que ponía otro nombre de variable: "loader2", para que no se confunda con el la variable "loader" que esta en la parte de arriba de todo el código.

Código actionscript:
Ver original
  1. private function cargarswf(e:MouseEvent):void {
  2.             var loader2:Loader=new Loader();
  3.             var ureq:URLRequest=new URLRequest(e.target.movie);
  4.             loader2.addEventListener(Event.COMPLETE,swfHandler);
  5.             loader2.load(ureq);
  6.             trace(e.currentTarget.movie);
  7.         }
  8.  
  9.         private function swfHandler(e:Event):void {
  10.             addChild(e.target);
  11.         }


pero salía y sigue saliendo el siguiente error:

1046: No se encontró el tipo o no es una constante en tiempo de compilación: Loader. (para la línea 2)
1180: Llamada a un método Loader posiblemente no definido. (para la línea 2)
1118: Conversión implícita de un valor con tipo estático Object a un tipo flash.display:DisplayObject posiblemente no relacionado.(para la línea 10)


Ese es lo que no he podido entender...

Espero puedas o puedan darme algúna idea....

saludos y Gracias :]

Última edición por annirami; 14/05/2010 a las 20:19 Razón: arreglar un error de escritura
  #4 (permalink)  
Antiguo 14/05/2010, 19:26
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 16 años
Puntos: 5
Respuesta: cargar swf externo con menu hecho en XML (AS3)

Ah vale, vamos a ver...

No se si sabes como funciona la estructura de packages que usa AS3, pero básicamente, para poder utilizar una clase, antes debes importar la clase del package donde se encuentr o el package entero. Esto viene de Java, o incluso también puedes verlo en PHP, c++ ... pero de formas diferentes. Mira este enlace, creo que expliqué bastante bien aquí la filosofía de los packages, como se crean y demás.

http://www.forosdelweb.com/f16/as3-d...-demas-715663/

Ahora con tu caso. Estás intentando utilizar una clase Loader que no se si flash la importa directamente, ya que nunca programo desde el entorno de flash y siempre lo importo todo, mirate FlashDevelop por si te interesa...

A lo que vamos, para poder utilizar las clases que hay en un package, tienes que importarlo, esto se hace de la siguiente manera utilizando la cláusula import al principio del código. Concretamente, la clase Loader está en el package flash.display

Código actionscript:
Ver original
  1. import flash.display.Loader; // Si solo vas a utilizar la clase Loader del package
  2.  
  3. import flash.display.*; // Importará todas las clases del package

Es bueno indicar siempre que clases vas a utilizar e importarlas, pero ahora, revisando un poco más tu código, he visto que en la linea 2 has puesto Loader sin paréntesis "()", prueba a poner new Loader();

No recuerdo la diferencia que había entre uno y otro, pero me parece que había alguna ;)
  #5 (permalink)  
Antiguo 23/05/2010, 17:17
Avatar de annirami  
Fecha de Ingreso: septiembre-2009
Ubicación: Lima, Perú
Mensajes: 53
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: cargar swf externo con menu hecho en XML (AS3)

Hola..que tal, gracias por tu respuesta. La verdad, sigo liada con las clases, casi siempre he hecho todo dentro del fla. y no se en que momento utilizar import. Bueno si, creo que es importante saber eso...y agregué otro import como dijiste:

import flash.display.Loader;

y en la función cargarswf, escribí lo siguiente:

Código actionscript:
Ver original
  1. private function cargarswf(e:MouseEvent):void
  2.         {          
  3.             var loader2:Loader=new Loader();
  4.             var ureq:URLRequest=new URLRequest(e.target.movie);
  5.             loader2.load(ureq);
  6.             addChild(loader2);
  7.         }
  8. private function removerswf(e:MouseEvent):void
  9.         {
  10.            
  11.             //removeChild(loader2);
  12.         }
Aquí muestro el enlace del ejemplo.

hasta ahí todo bien, cuando hago la acción mouse_over a cada botón, los swf se cargan, y al hacer mouse_out, quería que los swf ya no se visualizaran. Cuando activo el código que está en la linea 11 (al quitarle los comentarios) me sale el siguiente error y mi swf ya no carga nada, ni los botones:

1120: Acceso a una propiedad loader2 no definida.

Alguna ayuda o idea de porqué sale este error, no es lógico de que para dejar de visualizar los swf sería removeChild? Eso es lo que no entiendo.

Saludos y Gracias :]

Ah, gracias por los datos, sobre todo lo de FlashDevelop...

Última edición por annirami; 23/05/2010 a las 22:27 Razón: que mi consulta se entienda bien
  #6 (permalink)  
Antiguo 28/07/2010, 12:01
 
Fecha de Ingreso: julio-2010
Mensajes: 1
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: cargar swf externo con menu hecho en XML (AS3)

Hola que tal, espero que todos en el foro esten bien. Quisiera que alguien me ayudara a pasar un codigo que esta en AS2 , pasarlo a AS3. No tengo mucha experiencia en esto y por eso recurro a los expertos, espero alguien me ayude. El codigo es el siguiente.

var theXMLpp:XML = new XML();
theXMLpp.ignoreWhite = true;

theXMLpp.onLoad = function(){

var nodes = this.firstChild.childNodes;
var i=0;
var cont = 0;
galeria = new Array();
foto = new Array();

for(i=0;i<nodes.length;i++){
if(nodes[i].nodeName == "galeria")
{
galeria[cont] = nodes[i].firstChild.nodeValue ;
}
if(nodes[i].nodeName == "foto")
{
foto[cont] = nodes[i].firstChild.nodeValue ;
cont++;
}
}

foto1.text = galeria[0];
foto2.text = foto[0];
foto3.text = foto[1];
foto4.text = foto[0];
ciudadmin.text = galeria[1];
textmin.text = foto[1];


}

theXMLpp.load("http://www.galerias.com/fotos/xml/xmlgaleria.php");

---------------------------
mas que nada es como hacer el cambio para cargar el xml, espero alguien pueda ayudarme.
de antemano gracias y saludos para todos.

Etiquetas: externo, hecho, swf, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:20.