Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Elektra

Loader - exemplo: thumbs Array X arquivo final: thumbs Xml?

Recommended Posts

Preciso adicionar a 'animação' (mc) que informa o carregamento de imagens em um scroll xml.



Ao carregar o arquivo com imagens vindas de um array, todos os mcs animados (preloader) são adicionados em um mc individual (container) e posicionados no stage. Ao carregar as imagens (thumbs) em ordem sequencial, os 'preloaders' são removidos com alpha (TweenLite), e os thumbs surgem em exibição. Foi o melhor exemplo que consegui após exaustiva pesquisa, tutorial atualmente off.



Estudando o mesmo recurso para um scroll com xml. Tenho um mc 'geral' para rolagem, as imagens são adicionadas direto, ao observar outros exemplos, penso seja necessário criar um mc individual para cada imagem, a fim de ter melhor controle sobre cada 'objeto' (preloader_mc/imagem).



O loader com array e animação para o preloader de cada thumb difere da forma de execução no arquivo


com xml. Não estou sabendo como "adaptar" isso com o xml, travei com o loader.



exemplo com array ('preloader' individual ao carregar, exibição sequencial das imagens)




import com.greensock.TweenLite;
import com.greensock.easing.*;
import flash.net.URLRequest;
import flash.display.MovieClip;

var imageURLs = new Array();
var imageHolders = new Array();
var loadedImages:Number = 0;

var imageWidth:int = 170;
var imageHeight:int = 130;

imageURLs.push("images/img1.jpg");
imageURLs.push("images/img2.jpg");
imageURLs.push("images/img3.jpg");
imageURLs.push("images/img4.jpg");
imageURLs.push("images/img5.jpg");
imageURLs.push("images/img6.jpg");
//...

var imageHolder:MovieClip;


for (var i = 0; i < imageURLs.length; i++) {

imageHolder = new MovieClip();
imageHolder.buttonMode = true;

imageHolder.x = 50 + (imageWidth + 10) * i;
imageHolder.y = 50;

var preloader:StarPreloader = new StarPreloader();

preloader.x = (imageWidth - preloader.width) * .5;
preloader.y = (imageHeight - preloader.height) * .5;

imageHolder.addChild(preloader);

imageHolder.preloader = preloader;

addChild(imageHolder);

//após remover preloader
imageHolder.addEventListener(MouseEvent.CLICK, imageHolderClickHandler, false, 0, true);

imageHolders.push(imageHolder);
}

loadImage();


function loadImage():void {

var loader:Loader = new Loader();

var urlRequest:URLRequest = new URLRequest(imageURLs[0]);

loader.load(urlRequest);

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);

imageURLs.splice(0,1);
}


function imageLoaded(e:Event):void {

var image:Bitmap = (Bitmap)(e.target.content);

var holder:MovieClip = imageHolders[loadedImages];

holder.addChild(image);
TweenLite.from(holder, 3, {alpha: 0});

TweenLite.to(holder.preloader, 1, {scaleX: 1, scaleY: 1, alpha: 0,
onComplete:tweenFinished, onCompleteParams:[holder.preloader, holder]});

loadedImages++;

if (imageURLs.length > 0) {
loadImage();
}
}


function tweenFinished(preloader:MovieClip, holder:MovieClip):void {

holder.removeChild(preloader);
}


function imageHolderClickHandler(e:Event):void {

trace ("click");
}



arquivo final com xml onde preciso do mesmo recurso da animação (preloader) para os thumbs e carregamento sequencial



var requestFile:URLRequest = new URLRequest("imagens.xml");
var loaderFile:URLLoader = new URLLoader();
var pics:Array =[];

var fileXML:XML;
var listXML:XMLList = new XMLList();
var loaderPics:Loader;

var aContainer:Array = [];
var Container:MovieClip = new MovieClip();
Container.buttonMode = true;
var totalArray:int;

loaderFile.load(requestFile);


loaderFile.addEventListener(Event.COMPLETE, _xmlHandler);


function _xmlHandler(e:Event):void {
fileXML = new XML(e.target.data);
listXML = fileXML.imagem;

for each(var i in listXML) {
pics.push(i.arquivo);
}

showImages();
}


function showImages():void {
for(var i:int = 0; i < pics.length; i++) {
loaderPics = new Loader();

loaderPics.name = "pic" + i;

loaderPics.load(new URLRequest(pics[i]));

loaderPics.x = 50 + loaderPics.width + 180 * i;
loaderPics.y = 135;

Container.addChild(loaderPics);
addChild(Container);

aContainer.push(loaderPics);

trace(pics[i]);

loaderPics.addEventListener(MouseEvent.CLICK, chamaLightbox);
}


totalArray = aContainer.length - 1;
}

function chamaLightbox(e:MouseEvent):void {

trace(e.target.name); //pic0,pic1...pic3
}

Aprimorei o code do scroll xml do curso, adicionei lightbox, tá funfando lindo, só falta o preloader para os thumbs.



Tenho os arquivos online para visualização, agradeço muito quem puder auxiliar.




abs


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.