Estoy desarrollando una Galeria de imagenes en AS3 cargando las imagenes desde un XML, bien todo iba bien en el proceso hasta que tuve la necesitada de paginar, despues de buscar un rato termine de calcular la paginacion pero me tope con un problema yo defino un Maximo de Fotos a mostrar por PAgina en este caso 10, de hecho me muestra las 10 primeras, pero el detalle es que cuando le doy al boton de NEXT para que me muestre las fotos del 11 al 19 necesito remover las 10 primeras y volver a crear los loader que van dentro del cada MC que stoy mandando llamar.. bien a mi se me hizo facil usar el REMOVECHILD, pero algo sucede que me devuelve un error. A continuacion el Codigo:
import flash.display.MovieClip;
import flash.net.*;
import flash.events.Event;
import flash.display.Loader;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;
import flash.display.LoaderInfo;
import gs.TweenLite;
import gs.easing.*;
var MyXML:XML = new XML;
var uRLLoader:URLLoader = new URLLoader();
var Files:String = "MyGal.xml";
var offsetposX:Number = 15;
var posthumsX:Number;
var Maxvisible:Number= 10;
var NumTotalPics:Number;
var NumTotalPages:Number;
var ValorInit:Number=0;
var ValorFin:Number= Maxvisible;
var currentPage:Number = 1;
var currentGal:Number = 0;
var myThums:MovieClip;
var val:Boolean;
var objLoader:Loader;
var objFileToLoad:URLRequest;
LoadXML(Files);
//ARRAY
var Arr_thums:Array = new Array();
var Arr_gdes:Array = new Array();
function LoadXML(file:String) {
MyXML.ignoreWhitespace = true;
uRLLoader.load(new URLRequest(file));
uRLLoader.addEventListener(Event.COMPLETE,LoadArray);
}//END LoadXML
function LoadArray(event:Event):void {
var urLoader:URLLoader = event.target as URLLoader;
if (urLoader != null) {
MyXML =new XML(urLoader.data);
var i:Number=0;
var j:Number=0;
//trace(MyXML.child("galeria")[0].elements("thums").length());
//trace(MyXML.elements("galeria").attribute("nombre"));
var numThums:Number = MyXML.child("galeria")[0].elements("thums").length();
var numGdes:Number = MyXML.child("galeria")[0].elements("gde").length();
//trace("numGdes = "+numGdes);
//CALCULAMOS EL NUMERO TOTAL DE LAS FOTOS
NumTotalPics = numThums;
//SACAMOS EL TOTAL DE PAGINAS SEGUN EL NUMERO DE FOTOS
NumTotalPages= Math.floor(NumTotalPics/Maxvisible);
//trace("numThums = "+numThums);
//trace("NumTotalPages = "+NumTotalPages);
//for (var i:Number = 0;h<numThums;i++)
//for each (var numGal:XML in MyXML.elements())
for each (var numGal:XML in MyXML.elements()) {
Arr_thums[i] = new Array();
Arr_gdes[i] = new Array();
j=0;
//FOR PARA EXTRAER LAS IMG GDES
for each (var numGde:XML in numGal.elements("gde")) {
Arr_gdes[i][j] = numGde;
}
//FOR PARA EXTRAER LOS THUMS
for each (var numPic:XML in numGal.elements("thums")) {
myThums = new mc_vacio();
Arr_thums[i][j] = myThums;
Arr_thums[i][j].myPic = numPic;
//trace(Arr_thums[0][j].myPic);
myThums.Id=j;
myThums.buttonMode = true;
if (j==0) {
posthumsX=5;
} else {
posthumsX = (Arr_thums[i][j-1].x+Arr_thums[i][j-1].width)+offsetposX;
}
myThums.x = posthumsX;
myThums.y = 3;
myThums.alpha = 0;
//myThums.addEventListener(MouseEvent.CLICK,loadimgGde);
if ( ValorInit <= j && j < ValorFin) {
//AQUI ES DONDE MANDO CARGAR LAS PRIMERAS 10 FOTOS PARA MOSTRAR CON LA FUNCION loadTums
//numPic me devuelve todas las etiquetas "thums" que tiene mi XML
loadThums(numPic,myThums,j);
//holder_thums.addChild(myThums);
//TweenLite.to(myThums,1,{alpha:1,delay:(j*0.4)});
}
//trace(j);
j++;
//trace("j = "+j);
}//FOR EACH PARA SACAR EL NUMERO DE FOTOS POR GALERIA
i++;
}//FOR EACH PASA SABER CUANTAS GALERIAS TIENE EL XML
} else {
trace("no carga el XML");
}
}//END LoadArray
//PROPIEDADES A LAS FLECHAS PARA PAGINAR LOS THUMS
prev_mc.buttonMode = true;
next_mc.buttonMode = true;
prev_mc.addEventListener(MouseEvent.CLICK,prevPage);
next_mc.addEventListener(MouseEvent.CLICK,nextPage);
//==========================//
//========FUNCTIONES PARA PAGINAR CON LOS BOTONES DE LOS THUMS=========//
function prevPage(event:MouseEvent):void {
trace("previo");
}
function nextPage(event:MouseEvent):void {
//CALCULO EL VALOR FINAL QUE SERA EL QUE ME GUIE PARA CARGAR LOS THUMS DEL 11 AL 20
ValorFin = Math.floor(Maxvisible*NumTotalPages);
//INCREMENTO LA PAGINA
currentPage++;
//COMPRUEBO SI LA PAGINA ES MAYOR QUE IGUAL A 2
if (currentPage>=2) {
//REASIGNO EL VALOR DE LA VARIABLE PARA QUE ME DE EL SIGUIENTE RANGO DE PICTURES QUE SON APARTIR DE 10
ValorInit = (currentPage-1)*Maxvisible;
}
trace("ValorInit = "+ValorInit+" "+"ValorFin = "+ValorFin);
//CREO UN FOR PARA MANDAR CARGAR LAS SIGUIENTES IMAGENES
for(var R:Number = ValorInit; R<ValorFin; R++){;
//VARIABLE DE VALIDACION
val = false;
loadThums(Arr_thums[currentGal][R].myPic,Arr_thums[currentGal][R],R);
}
}
//===============================================================//
//===============================================================//
//AQUI ES LA FUNCION QUE SE ENCARGA DE CREAR AL LOADER QUE VA DENTRO DE CADA MC QUE MANDO LLAMAR DE MI //LIBRERIA LA PRIMERA VEZ QUE ENTRA LA FUNCION LOS CREA Y NO HAY PROBLEMA EL DETALLE COMO MENCIONE VIENE
//EN LA FUNCION nextPage PORQUE ES DONDE TENGO QUE VALIDAR SI YA ESTAN ADHERIDOS LOS MC DE MI LIBRERIA
//DENTRO DE holder_thums QUE ES UN MC QUE YA ESTA EN EL SCENARIO ENTONCES SI YA EXISTEN QUE LOS REMUEVA
//PARA CREAR LOS NUEVOS MC Y LOADERS QUE VA A CREAR SEGUN LA FUNCION nextPage
function loadThums(img:String, holder:MovieClip, n:Number){
//SEGUN LEI E HICE UNA PRUEBA CON ESTA INSTRUCCION PUEDES REMOVER LOS HIJOS ADHERIDOS A UN MC, PERO EL //DETALLE ES QUE ESTO ME DEVUELVE ( The supplied DisplayObject must be a child of the caller. ) Y ES DONDE NO //ENTIENDO,
//holder_thums.removeChild(holder);
holder_thums.addChild(holder);
TweenLite.to(holder,1,{alpha:1,delay:(n*0.4)});
var loader:Loader = new Loader();
loader.load(new URLRequest(img));
loader.contentLoaderInfo.addEventListener(Event.INIT, onInit);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
holder.addChild(loader);
}
function onInit(e:Event):void {
//trace("inica");
}
function loadProgress(e:ProgressEvent):void {
//trace("procesa");
//trace("progressHandler: bytesLoaded=" +e.bytesLoaded + " bytesTotal=" + e.bytesTotal);
}
Bien se despide un colega que esta apunto del suicido y de la histeria total... muchas gracias de antemano por leer este post y pronto subire unas librerias que eh creado para el deleite de todos ustedes...
Muchas Gracias y espero sus Comentarios con alguna ayuda o tutorial