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:
Código :
<?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>';
?>
AS3:
Código :
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[i] = new Loader();
arrCarg[i].contentLoaderInfo.addEventListener(Event.COMPLETE , cargado);
arrCarg[i].load(new URLRequest("http://localhost/Galeria/imagenes/Fotos/Thumbnails/"+xmldata.foto[i]));
Arreglo[i]="imagenes/Fotos/Grandes/"+xmldata.foto[i];
arrControl[i]=xmldata.control[i];
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);