Muchas veces nos ha pasado de tener problema con las carpetas/rutas de los archivos, voy a explicarlo con el ejemplo.
Nuestro diseñador hace un bonito swf que llama a xml/mp3/flv que están dentro de una carpeta que se llama /cosas, por lo que gráficamente quedaría algo como esto:
El swf estaría aquí:

y en la carpeta cosas tendria algo como esto:

Cuando ejecutamos ese swf se ejecuta sin ningún problema. El diseñador nos pasa los archivos para los metamos en el sitio que ya estamos trabajando. Como ya estamos trabajando tenemos una estructura de trabajo y organización, con lo que tal vez quede algo así:

Lo mas común, es que pagina.html utilice el archivo flash.swf y aquí es cuando queremos matar gatitos.
¡EL FLASH NO FUNCIONA!
Pero si lo ejecutamos y anda ¿Por qué no anda cuando lo queremos usar? La mayoría de las veces, es la ruta de los archivos que levantamos.
Con el siguiente código podremos de manera muy fácil y elegante este problema:
Código :
function url():String { var url_array:Array = _root._url.split('/'); String(url_array.pop()); return url_array.join('/') + '/'; } _root._global.myUrl = url();
La función en cuestión básicamente lo que hace es devolver el path del archivo swf, y es mas, le daremos el valor de la función a una variable global.
Con _global utilizamos variables globales, en este caso llamada myUrl, le daremos el valor que retorne nuestra función.
Nuestra función lo que hace es crear un array de la ruta completa pero separa por los / por lo que nuestro swf esta en www.dominio.com/carpeta/algo.swf el array tendrá los siguientes valores:
- 0 => www.dominio.com
- 1 => carpeta
- 2 => algo.swf
Con .pop() lo que hacemos es eliminar el ultimo elemento de ese array, y en la tercera línea se devuelve el resultado de unir ese array con el carácter / y le concatenamos / con lo que nos devolvería www.dominio.com/carpeta/
Ahora cada vez que tengamos cosas como:
Código :
myXML.load('miarchivo.xml');
Lo reemplazaremos por
Código :
myXML.load(_root._global.myUrl + 'miarchivo.xml');
Y con eso, no importa donde se ejecute el swf, siempre llamara bien a todos los archivos.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
*mira feo a "_global"
Código :
Código :
Zguillez :
Código :
Código :
Zguillez, interesante, no conocia las clases estaticas; de todas formas, la idea es conseguir la ruta del archivo, no que la funcion realice la tarea de .load()
Mas tarde vere la forma de implementarlo mejor utilizando clases estaticas
Gracias
Zguillez :
Código :
Código :
Sería:
Código :
Código :
Por Becky el 13 de Noviembre de 2009
Sería posible que la complementaran un poquito diciendo exactamente dónde hay que poner esos códigos para que todo salga a la perfección? Discúlpen, mis conocimientos de Flash son muy pocos y siempre guiada por ejemplos o tutoriales encontrados páginas como esta, así que se los agradecería un mundo.
Casualmente conseguí este post tratando de averiguar por qué una galería flash que subí al servidor no puede verse ni en el archivo de la página que estoy trabajando y mucho menos en el Myspace donde la quiero subir.
Este es el codigo que estoy utilizando an ambos casos:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" height="500" width="350">
<param name="allowScriptAccess" value="never" />
<param name="allowNetworking" value="internal" />
<param name="movie" value="http://www.mipagina.com.ve/prueba/miarchivo.swf"/>
<param name="wmode" value="transparent" />
<embed type="application/x-shockwave-flash" allowScriptAccess="never" allowNetworking="internal" src="http://www.mipagina.com.ve/prueba/miarchivo.swf" height="500" width="350" wmode="transparent" />
</object>
Con mi agradecimiento eterno si logran ayudarme a resolver el problema, les saluda,
Becky
Por naranjorange el 11 de Marzo de 2010
Por david el 19 de Mayo de 2010
Por apurado el 28 de Junio de 2011
Por nelson el 25 de Julio de 2011
Por nelson el 27 de Julio de 2011
Por chamaco08 el 21 de Agosto de 2012
Por chamaco08 el 21 de Agosto de 2012
Gracias Maestros...!!!
Por ayuda el 14 de Abril de 2013
en flash:
photo_filename = new Array();
photo_thumbnail = new Array();
photo_description = new Array();
filepath = "../photos/";
// Load the photos XML
var flashmo_xml = new XML();
flashmo_xml.ignoreWhite = true;
flashmo_xml.onLoad = function()
{
var nodes:Array = this.firstChild.childNodes;
for(var i=0;i<nodes.length;i++)
{
photo_filename.push(nodes[i].attributes.filename);
photo_thumbnail.push(nodes[i].attributes.thumbnail);
photo_description.push(nodes[i].attributes.description);
}
}
flashmo_xml.load(filepath + "flashmo_024_photos.xml");
el xml:
<?xml version="1.0" encoding="utf-8"?>
<photos>
<photo filename="flashmo_022_park_06.jpg" thumbnail="s_flashmo_022_park_06.jpg" description="Bird 1 in the garden" />
<photo filename="flashmo_022_park_07.jpg" thumbnail="s_flashmo_022_park_07.jpg" description="Bird 2 in the garden<br />Here is an example HTML link to <a href="http://www.flashband.net/">flashband.net</a>." />
<photo filename="flashmo_022_park_12.jpg" thumbnail="s_flashmo_022_park_12.jpg" description="Tree 1 <br />Second line<br />Third line, this is an example of HTML formatted text from an XML file." />
<photo filename="flashmo_022_park_20.jpg" thumbnail="s_flashmo_022_park_20.jpg" description="Tree 2 <br />This template gives you an idea of making a dynamic flash photo gallery using an external XML file." />
<photo filename="flashmo_022_park_26.jpg" thumbnail="s_flashmo_022_park_26.jpg" description="Butterfly" />
<photo filename="flashmo_022_park_30.jpg" thumbnail="s_flashmo_022_park_30.jpg" description="Tree 3" />
<photo filename="flashmo_022_park_31.jpg" thumbnail="s_flashmo_022_park_31.jpg" description="Tree 4" />
<photo filename="flashmo_022_park_34.jpg" thumbnail="s_flashmo_022_park_34.jpg" description="Bees on a flower" />
<photo filename="flashmo_022_park_01.jpg" thumbnail="s_flashmo_022_park_01.jpg" description="This photo size is 640x480." />
<photo filename="flashmo_022_park_27.jpg" thumbnail="s_flashmo_022_park_27.jpg" description="640x480 size photo" />
<photo filename="flashmo_022_park_28.jpg" thumbnail="s_flashmo_022_park_28.jpg" description="This photo is 640x480 size." />
</photos>
Gracias
Por el 16 de Mayo de 2013
Por nissi el 16 de Mayo de 2013
function url():String
{
var url_array:Array = _root._url.split('/');
String(url_array.pop());
return url_array.join('/') + '/';
}
_root._global.myUrl = url();
Por Xavier Díaz el 03 de Enero de 2014