Buenas, tengo un follón de narices ya que es la primera vez que me meto con Flash y AS2. He estado buscando cosas parecidas o soy muy ciego o no he visto nada similar a lo que me ocurre.
Seguí un tutorial de como importar XML y otro de galeria de imagenes con el movieClipLoader. Hasta aquí más o menos me apañe.
El problema es que el XML es dinámico (es un archivo PHP que se interpreta como XML y carga datos de una base MySQL) y necesito que los containers se vayan creando conforme a la cantidad de childNodes que existan. Lo llevo intentando dios sabe cuantas horas, y siempre se crean unos encima de otros y ahora ya se crean en miniatura y con la imagen a media carga
Aver si me podeis hechar una mano, os dejo los códigos, mil gracias!
Listado de Archivos y Directorios
\Raiz
|-- albumXML.php
|-- albumXML.swf
|--\Proyectos
|-----\Album
|--------\USA
|--------|-- I1276097909wallpaper-32445.jpg
|--------\USAWA
|--------|-- I1276082322Invierno.jpg
|--------|-- I127608083531006.jpg
|--------|-- I127608224031000.jpg
|--------|-- I127608225031040.jpg
|--------|-- I127608227230966.jpg
Contenido Archivo albumXML.php Código PHP:
<?php
header('Content-Type: text/xml; charset=ISO-8859-1');
echo "<?xml version='1.0' encoding='ISO-8859-1'?".">";
include("./conn.inc.php");
$qx="SELECT id,tipo FROM proyectos";
$rx=query($qx,$dbl);
if (num_rows($rx)>0)
{
echo "<galeria>";
while ($rw=fetch_array($rx))
{
$r = fetch_array(query("SELECT titulo, url FROM galeria WHERE album = \"".$rw['id']."\" ORDER BY RAND() LIMIT 1",$dbl));
$titulo = $r['titulo'];
$url = $r['url'];
echo "<album>";
echo "<titulo><![CDATA[".$titulo."]]></titulo>";
echo "<imagen><![CDATA[".$url."]]></imagen>";
echo "</album>";
}
echo "</galeria>";
}
?>
Código XML generado por este PHP
Código XML:
Ver original-<galeria>
-<album>
<titulo>Imagen 1</titulo>
<imagen>./proyectos/album/USAWA/I127608083531006.jpg</imagen>
</album>
-<album>
<titulo>Foto wai</titulo>
<imagen>./proyectos/album/USA/I1276097909wallpaper-32445.jpg</imagen>
</album>
</galeria>
albumXML.fla Objetos
- Instancia de Contenedor
http://i25.tinypic.com/33vygeo.jpg
albumXML.fla AS2 Código PHP:
// Declaro el objeto XML
var xml:XML = new XML();
// Permitir usar blancos (OBLIGATORIA)
xml.ignoreWhite = true;
xml.load("albumXML.php");
// Funcion que se va a ejecutar cuando se cargue el xml
xml.onLoad = function(exito) {
// Variable exito = Si se ha cargado sera true, si no sera false
if (exito == true)
{
var cuantos:Number = xml.firstChild.childNodes.length;
var i:Number;
var centroX:Number = 100; // X del Contenedor para ir desplazando
var centroY:Number = 50; // Y del Contenedor para ir desplazando
for (i=0;i<cuantos;i++)
{
var mi_mcl = new MovieClipLoader();
miListener = new Object();
miListener.onLoadStart = function(target_mc) {
target_mc._visible = false;
target_mc._xscale = 100;
target_mc._yscale = 100;
};
miListener.onLoadInit = function(target_mc) {
var ancho_maximo = 150;
var alto_maximo = 150;
// Si es más grande de lo permitido entro en en if
if (target_mc._width>ancho_maximo || target_mc._height>alto_maximo) {
if (target_mc._width/target_mc._height>1) {
// disposición horizontal
var coef = target_mc._width/ancho_maximo;
} else {
// disposición vertical
var coef = target_mc._height/alto_maximo;
}
target_mc._width /= coef;
target_mc._height /= coef;
}
// Cuando ya tenemos un clip con el tamaño adecuado lo situamos centrado en el punto deseado
var centro_x = centroX;
//centroX = centroX + 150;
var centro_y = centroY;
//centroY = centroY + 100;
target_mc._x = centro_x-target_mc._width*0.5;
target_mc._y = centro_y-target_mc._height*0.5;
// Ahora que el clip se ha cargado, lo tenemos al tamaño correcto y bien posicionado, lo hacemos visible
target_mc._visible = true;
};
miListener.onLoadError = function(target_mc, errorCode) {
trace("ERROR CODE = "+errorCode);
trace("Your load failed on movie clip = "+target_mc+"\n");
};
mi_mcl.addListener(miListener);
var ruta = xml.firstChild.childNodes[i].childNodes[1].firstChild.nodeValue;
mi_mcl.loadClip(ruta, contenedor_mc);
}
//texto_mc.text = xml.firstChild.childNodes[1].childNodes[0].firstChild.nodeValue;
}
else
{
trace("Error, no se cargo el xml correctamente");
}
}
stop();
Muchas Gracias!
Me sale esto en Flash:
http://i27.tinypic.com/314vx8g.jpg
Y necesito esto que consegui en PHP:
http://i27.tinypic.com/34q2vz4.jpg