Problema con Galería en AS3 y XML

oslawso

Lanero Regular
15 Abr 2011
2
Hola a todos,
me gustaría que me pudieran ayudar con este código en AS3 con el que cargo una galería de imágenes desde un XML, la verdad es que no se que es lo que puede tener ya que el funciona a veces, al testear la película en flash solo muestra (a veces) de las 14 imágenes que quiero cargar 5 ó 6 ó 7 ó ...pero no todo el tiempo las muestra todas como debería ser.

El XML lo estoy generando con PHP y las direcciones las cargo desde una base de datos.

Utilizo la librería desarrollada por GREENSOCK para hacer los tween ya que con la clase tween de as3 tenia problemas, las imágenes se quedaban por la mitad del recorrido pero igual nunca aparecían las 14 imágenes que tengo cargadas en el xml.

y al hacerle click a las imágenes en la web llamo a una función para que me abra un lightbox.

todo funciona bien menos la cantidad de imágenes que se cargan del XML.

Acá dejo el código PHP con el que genero el XML y el Código AS3 con el que genero la Galería
PHP:
<?php 
header("Content-type: text/xml"); 
echo '<?xml version="1.0"?>'; 
 
   $conexion= mysql_connect("localhost","root","12345") or die(mysql_error()); 
   mysql_select_db("BD_Prueba",$conexion); 
       
   $consulta=mysql_query("SELECT * FROM galeria WHERE Status = '1' ORDER BY ID_Orden") or die(ferror(mysql_errno())); 
   $i=0; 
   while($resultado=mysql_fetch_array($consulta)){ 
      if($resultado['Foto']!=""){ 
         $imagen[]=$resultado['Foto']; 
         $i+=1; 
      } 
   } 
 
echo '<album>'; 
echo "<i>".$i."</i>"; 
$pos = 0; 
while ($pos<$i) { 
      echo '<foto>'; 
      echo $imagen[$pos]; 
      echo '</foto>'; 
      echo '<control>'; 
      echo $pos; 
      echo '</control>'; 
      $pos++; 
} 
echo '</album>'; 
?>

Codigo AS3:
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.display.MovieClip;
import flash.text.TextField;
import com.greensock.*;
import com.greensock.easing.*;

nombre();
asign();

var arrObj:Array = new Array();
var arrCarg:Array = new Array();
var arrControl:Array = new Array();
var Arreglo:Array = new Array();
var i =0;
var m =0;
var mover:Tween;
var mover1:Tween;
var mover2:Tween;
var mover3:Tween;
var movermarco1:Tween;
var movermarco2:Tween;
var cantidad=0;


var xmldata:XML;

function nombre(){
var formatoTexto:TextFormat=new TextFormat();
formatoTexto.color=0xeeeeee;
formatoTexto.size=28;
formatoTexto.font='Maiandra GD';

var texto:TextField = new TextField();
addChild(texto);
texto.defaultTextFormat=formatoTexto;
texto.text="Galeria";
texto.x=17;
texto.y=8;
texto.width=500;

}
function asign() {
var xy:URLLoader = new URLLoader();
xy.load(new URLRequest("http://localhost/Galeria/codigos/generarxmlgaleria.php")) ;
xy.addEventListener(Event.COMPLETE, Cargar);

}

function Cargar(e:Event) {
xmldata = new XML(e.target.data);
cantidad = xmldata.i;

while(i<cantidad){

arrCarg = new Loader();
arrCarg.contentLoaderInfo.addEventListener(Event.COMPLETE, cargado);
arrCarg.load(new URLRequest("http://localhost/Galeria/imagenes/Fotos/Thumbnails/"+xmldata.foto));
Arreglo="imagenes/Fotos/Grandes/"+xmldata.foto;
arrControl=xmldata.control;
i++;
}
}
function cargado(e:Event) {
var imagen = arrCarg[m].content;
arrObj[m] = new MovieClip();
var wid = imagen.width;
var hei = imagen.height;
var tamaskh=0;
var tamaskw=0;
if(wid>hei){
tamaskw=-((wid/2)-50);
}else{
tamaskh=-((hei/2)-50);
}

wid=106;
hei=106;

var box:MovieClip= new MovieClip();
box.mouseEnabled = false;
box.graphics.beginFill(0xeeeeee);
box.graphics.drawRect(0,0,wid,hei);
box.graphics.endFill();

imagen.x=tamaskw;
imagen.y=tamaskh

var maskingMovieClip:MovieClip=new MovieClip();
maskingMovieClip.x=0;
maskingMovieClip.y=0;

maskingMovieClip.graphics.lineStyle();
maskingMovieClip.graphics.beginFill(0xFFFFFF,1);
maskingMovieClip.graphics.drawRect(0,0,100,100);
maskingMovieClip.graphics.endFill();

imagen.mask=maskingMovieClip;

arrObj[m].control = xmldata.control[m];
arrObj[m].nombre = xmldata.foto[m];

var tiempo = 1.5;
arrObj[m].addChild(box);
box.x-=3;
box.y-=3;
arrObj[m].addChild(maskingMovieClip) ;

arrObj[m].addChild(imagen);
arrObj[m].addEventListener(MouseEvent.MOUSE_OVER, Over);
arrObj[m].addEventListener(MouseEvent.CLICK, BotonAccion);
arrObj[m].addEventListener(MouseEvent.MOUSE_OUT, Out);

addChild(arrObj[m]);
arrObj[m].alpha=0;

if(m<7){
var posx1 =(115*m+20);
TweenMax.to(arrObj[m], 3, {x:posx1, y:50, alpha:1, ease:Quint.easeOut});
}else{
if(m<14){
var posx2 =(115*(m-7)+20);
TweenMax.to(arrObj[m], 3, {x:posx2, y:165, alpha:1, ease:Quint.easeOut});
}else{
var posx3 =(115*(m-14)+20);
TweenMax.to(arrObj[m], 3, {x:posx3, y:290, alpha:1, ease:Quint.easeOut});
}
}
m++;
}
function Over(Event:MouseEvent):void{
var elclip:MovieClip = new MovieClip();
elclip= MovieClip(Event.target);
//trace(elclip.nombre);
Mouse.cursor = MouseCursor.BUTTON;
elclip.alpha=0.7;
}
function Out(Event:MouseEvent):void{
var elclip:MovieClip = new MovieClip();
elclip= MovieClip(Event.target);
Mouse.cursor = MouseCursor.ARROW;
elclip.alpha=1;

}
function BotonAccion(Event:MouseEvent):void {
var elclip:MovieClip = new MovieClip();
elclip= MovieClip(Event.target);
Mouse.cursor = MouseCursor.BUTTON;
var cont=elclip.control;
var acum=0;
var bandera=true;
var xx=Arreglo.length;
var Galeria:Array = new Array();
while(acum<xx){
if(cont>=xx){
cont=cont-xx;
}
Galeria[acum]=Arreglo[cont];
acum++;
cont++;
}
ExternalInterface.call("LightBox",Galeria);
}
 
Seria bueno separar una cosa de la otra para probar.

Tiene forma de crear un XML a mano, con imagenes locales y cargarlo en el codigo AS3 que tiene? Con eso se podría mirar si el problema se presenta en la creación del XML desde PHP o si el problema se presenta una vez se entra a ejecutar el código en Flash.
 
listo, solucionado,
en la primera linea de la función cargado utilizo el arreglo arrCar[m].content en cambio debo utilizar e.target.content ya que acaba de terminar de cargar un evento

gracias Oesoto por dedicar tu tiempo en leer mi problema

saludos siempre a la orden
 

Los últimos temas