Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/07/2010, 01:35
Alcalina
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 7 meses
Puntos: 5
Galeria Flash AS2, XML, PHP y SQL

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
  1. -<galeria>
  2.   -<album>
  3.       <titulo>Imagen 1</titulo>
  4.       <imagen>./proyectos/album/USAWA/I127608083531006.jpg</imagen>
  5.     </album>
  6.   -<album>
  7.       <titulo>Foto wai</titulo>
  8.       <imagen>./proyectos/album/USA/I1276097909wallpaper-32445.jpg</imagen>
  9.     </album>
  10. </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_mcerrorCode) {
                
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(rutacontenedor_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

Última edición por Alcalina; 14/07/2010 a las 02:23 Razón: Aver si con un par de imagenes se entiende mejor...