A veces tenemos que hacer llamadas desde flash a archivos externos en un servidor y esto es un solor de cabeza a la hora de depurar. Si estos archivos son estáticos y no hay problema, pero ¿ que pasa cuando tienes que hacer pruebas atacando a archivos php o asp en un servidor local y luego cambiar dicho servidor?
Habría que modificar todas las rutas de absoluta a relativa cada vez que quieras testear en el server local, y eso es un tostón y pérdida de tiempo importante .

Pero hay una forma fácil de conseguir que cuando estemos testeando con el IDE de Flash (o Flash Develop o el que sea): la propiedad playerType de la clase flash.system.Capabilities. Esta propiedad puede devolvernos:
- StandAlone, si se está reproducciendo en un reproductor ejecutable.
- External, si se reproduce desde el IDE o desde el reproductor de flash del sistema.
- PlugIn, si se trata de un plugin de navegador.
- ActiveX, si se ejecuta mediante el control Active X de Internet Explorer
Vamos a poner un ejemplo, yo tengo que hacer una llamada absoluta dentro del entorno de mi programa de desarrollo para que los phps que pido me funcionen, pero cuando lo suba y pruebe desde navegador quiero que la llamada sea relativa a donde esté alojado.
La idea es declarar antes de la llamada una variable de host, que variará dependiendo de si el flash se reproduce desde el entorno de pruebas o no
Por ejemplo:
var host:String;
if(Capabilities.playerType == "External"){
host="http://localhost/mipagina/";
}else{
host="";
}
var request:URLRequest=new URLRequest(host+"datos.php");
De esta forma no tendremos que andar cambiando las llamadas cada 2 por 3, que hacerlo en un archivo es facil, pero en un sitio completo en flash con varios .swf puede ser un suplicio
Tags: as3, chorritrucos, flash
Posted by Cesar - 31/05/11 - 0 comments





