Comunidad de diseño web y desarrollo en internet online

Ayuda: Mostrar un swf en Flex

Citar            
MensajeEscrito el 30 Ago 2010 05:08 pm
La cuestión es esta, estoy trabajando con una aplicación flex y en ella quiero insertar un carrusel que carga imágenes y datos por XML, el problema es que al tratarlo de cargar con

Código Flex :

<mx:SWFLoader x="205" y="375" source="Carrusel.swf"/>
el elemento no se ejecuta, ni siquiera se muestra y es necesario añadirlo, como puedo arreglar esto?

En el mismo proyecto de flex tengo cargados varios swfs de la misma forma y no hay ningún problema, lo cual me da la idea de que probablemente es que este swf es más complejo.

Por Zerma

515 de clabLevel

2 tutoriales

 

Naucalpan

firefox
Citar            
MensajeEscrito el 30 Ago 2010 05:48 pm
BuenAS:

Imagino que en la carpeta donde publicas (bin-debug) está tanto Carrusel.swf como el xml y las imágenes.

Si es el caso, no debería darte problemas ya que Carrusel.swf está al mismo nivel que tu aplicación.

Otra cosa sería si Carrusel.swf, el xml y las imágenes estuviesen DENTRO de una carpeta, por ejemplo la carpeta "swf", y utilizas rutas relativas. Aquí si suele dar problemas ya que el swf cargado se "cree" que está en la carpeta del swf cargador y va a buscar el xml y las imágenes fuera.

Este último problema (que creo que no tienes, si no metes el swf, etc. en carpetas y utilizas rutas relativas), se suele llamar el problema del dueño del stage y se soluciona comprobando "realmente" dónde está (en qué carpeta) un swf cuando va a cargar algo, a través de loaderInfo.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 30 Ago 2010 05:55 pm
BuenAS, de nuevo:

Aunque creo que no es ese el problema, por si te sirve de ayuda, la función que suelo utilizar para procesar una ruta y asegurarme que es "realmente" relativa a la posición donde está el swf:

Código ActionScript :

private function getUrl(url:String):String
{
   if (!(url.indexOf(":") > -1 || url.indexOf("/") == 0 || url.indexOf("\\") == 0))
   {
      var rootURL:String;
      if (root)
      {
         rootURL = root.loaderInfo.url;
         if (rootURL)
         {
            var lastIndex: int= Math.max(rootURL.lastIndexOf("\\"), rootURL.lastIndexOf("/"));
            if (lastIndex != -1)
            {
               url = rootURL.substr(0, lastIndex + 1) + url;
            }
         }
      }
   }
   return url;
}


Generalmente harías para cargar un xml algo así:

loader.load(new URLRequest("xml/data.xml"));

básicamente sería hacer:

loader.load(new URLRequest(getUrl("xml/data.xml")));

Así te aseguras de que, independientemente de que el swf sea cargado o no por otro, la ruta es correcta.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 30 Ago 2010 06:08 pm
No sabía el problema de las carpetas y las rutas relativas, me has salvado la vida, muchas gracias, ya quedó solucionado y funcionando a la perfección ^^

Por Zerma

515 de clabLevel

2 tutoriales

 

Naucalpan

firefox
Citar            
MensajeEscrito el 31 Ago 2010 05:00 am
Hola!!, hace tiempo q tengo el mismo problema y no he podido solucionarlo.

Lukánicos: usando tu funcion, el valor q me retorna es el q debo d usar en "<mx:SWFLoader x="205" y="375" source="---AQUI---"/>"
o tendría q usar un loader d as3???

La aplicacion swf q tengo es un swf q muestra el clima, el cual lo obtiene d un servidor d yahoo, tambien usa imagenes las cuales cargo d una carpeta dentro del mismo servidor.

Saludos.

Por px87

Claber

141 de clabLevel

1 tutorial

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 Ago 2010 05:14 am
BuenAS px87:

Creo que tu problema es otro. El que estamos comentando ocurre cuando un swf A carga a otro B, y este último está dentro de una subcarpeta y carga imágenes o xml's de una 3ª subcarpeta. El swf B, cuando lo carga A, se "cree" que está en la carpeta donde está A e intenta cargar las imágenes y xml's con respecto a esta posición y, lógicamente, falla.

Imagino que tu caso puede ser debido a que tengas que registrarte (normalmente estos servicios suelen ser gratuítos, pero llevan un control de los sites que hacen uso de ellos) o registrar tu site (la url desde dónde vas a consultarlo), ya que darás rutas absotutas y no relativas. O sea, para cargar las imágenes de fondo, darás la ruta (ficticia, no sé tu auténtica)

http://www.servicio_tiempo.com/assets/icons/

y debería encontrarlo siempre.

Consulta las especificaciones de este servicio para ver todos los requisitos que exige.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 31 Ago 2010 06:40 pm
Hola Lukánicos:

No, la api d yahoo weather no requiere llave, mi swf funciona perfectamente cuando lo ejecuto aparte (o sea, cuando lo utilizo fuera d otro swf).

Mi problema es q simplemente no aparece y me lanza este error:

"TypeError: Error #1007: Se intentó crear una instancia en un tipo no constructor.
at mx.preloaders::Preloader/initialize()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\preloaders\Preloader.as:253]
at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::initialize()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\SystemManager.as:1925]
at mx.managers::SystemManager/initHandler()[E:\dev\4.0.0\frameworks\projects"

En este post, hasta el final esta la aplicacion por si gustas echarle un ojo:

http://foros.cristalab.com/problema-con-api-de-yahoo-weather-t89064/


Muchas gracias, saludos.

Por px87

Claber

141 de clabLevel

1 tutorial

Genero:Masculino  

msie8
Citar            
MensajeEscrito el 31 Ago 2010 07:20 pm
BuenAS:

Parece que lo que tienes es una aplicación Flex que carga otra aplicación Flex ¿no? Parece que hay algún tipo de incompatibilidad en el preloader. ¿Puede ser que una -creo que la cargadora-, esté compilada con Flex 4.0 y la otra con Flex 3.5? Si es el caso, prueba a convertir la 3.5 a 4.0 (que la aplicación principal sea del namespace s, en lugar de mx). Otra posibilidad es desactivar el preloader.

Por si no es esto, y lo que cargas es un swf ActionScript (sin Flex), asegúrate de que la aplicación cargada tiene stage; o sea en el constructor de la clase principal asegurate antes de todo que se produce el evento ADDED_TO_STAGE.

También he utilizado la API del tiempo de Yahoo y no me ha dado problemas, pero sin cargar el swf desde otro; cosa que a tí tampoco te da problemas.

El error que suele aparecer cuando tienes un problema de rutas relativas, como se comentaba al principio del hilo, es que no se cargan las imágenes, ya que la ruta relativa no se construye de forma correcta y la clase Loader (o la que estés utilizando) no encuentra los archivos. Y me sigue dando la sensación de que no es tu caso-.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 31 Ago 2010 07:27 pm
...bueno; tendría que haber visto el enlace al otro hilo antes de contestar; parece que las dos son Flex 4.0. Pues la verdad que ahora me dejas con la duda. Voy a probar a cargar un Flex 4.0 desde otro Flex 4.0 a ver si falla el preload :) Ya te comento...

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 31 Ago 2010 07:46 pm
BuenAS:

Acabo de probarlo y no da mayor problema. Otra cosa que se me ocurre: si estás utilizando Flex 4 y tienes la configuración por defecto en el panel Properties del proyecto, Flex Build Path/Library Path/Framework: Use SDK default linkage(runtime shared library), el swf anterior de Flex 3.5 se "descompone" en un swf más pequeño, y un grupo de swf's con los paquetes de clases compiladas de las distintas partes del framework (TLF, OSMF, Spark, etc). Si cambias de sitio el swf, deberías acompañarlo de todos estas swf's, o en el apartado anterior del panel Properties seleccionar Mergued into code, para que sólo se genere un swf.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 02 Sep 2010 02:57 am
Hola Lukánicos, muchas gracuas por tu respuesta, lamentablemente en estos momentos no tengo tiempo d probar tus consejos, ya q estoy estudiando para un examen d certificacion.

Muhcas gracias, en cuanto pueda voy a programar lo q me dices.

Saludos.

PD.

A proposito, si he probado cargar otros swf's hechos en flex 3.5 (han sido muy basicos) en flex 4 y funcionan bien, falta probar lo q me dices.

Por px87

Claber

141 de clabLevel

1 tutorial

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Abr 2011 04:10 pm
Hola quisiera si alguien me podría ayudar, no se como hacer q un archivo tenga mas de un sfw.

lo que pasa es que tengo que modificar un software que tenia mas de un swf. sin embargo no me dejaba modificar, la única manera que encontré fue convirtiendo 2 swf a .fla ahora que he terminado de hacer las modificaciones no se como convertirlos a swf. y lo tengo q entregar para el día de hoy.
muchas gracias.

Por anexayda

1 de clabLevel



Genero:Femenino  

estudiante de ITIC

chrome
Citar            
MensajeEscrito el 06 Abr 2011 07:00 pm

anexayda escribió:

Hola quisiera si alguien me podría ayudar, no se como hacer q un archivo tenga mas de un sfw.

lo que pasa es que tengo que modificar un software que tenia mas de un swf. sin embargo no me dejaba modificar, la única manera que encontré fue convirtiendo 2 swf a .fla ahora que he terminado de hacer las modificaciones no se como convertirlos a swf. y lo tengo q entregar para el día de hoy.
muchas gracias.


Tienes que exportar cada película flash por separado (en el Menú Archivo>Publicar) y ya que tengas esos 2 archivos en swf nuevamente puedes mandarlos a llamar desde otro lado ^^

Por Zerma

515 de clabLevel

2 tutoriales

 

Naucalpan

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.