Publiquei os testes, vejam para entender melhor:
http://www.propagare.net/tip8 entrem na pagina Portfolio
Meu problema: quando clico na seta de avançar, as fotos são exibidas mas não ficam exatamente na mesma posição que estavam no começo, o que deixa meu layout feio.
Meus códigos:
import caurina.transitions.Tweener; //Primeiro Movie-Clip de Fotos // largura da máscara, ou seja, área de visualização: var areaVisual:Number = mask_mc._width; // Vamos guardar a posição inicial do nosso clip para uso futuro: var posicaoInicial:Number = tudo_mc._x; var numDeslocamento:Number = tudo_mc._width / areaVisual; if (numDeslocamento.toString().indexOf(".") > -1) numDeslocamento++; var listaDePosicoes:Array = new Array(); for (var i:Number = 0; i < numDeslocamento; i++) { listaDePosicoes.push(Math.round(posicaoInicial - (areaVisual * i))); } var indiceFluxo:Number = 0; avancar_mc.onRelease = function():Void { if (indiceFluxo >= (numDeslocamento -4)) { // Se estava na penúltima vez e foi para o último deslocamento, desabilitar este botão. this.enabled = false; var cor:Color = new Color (avancar_mc); cor.setRGB(0xF4EEDD); } // habilito o botão voltar.. voltar_mc.enabled = true; var cor:Color = new Color (voltar_mc); cor.setRGB(0xFF8200); indiceFluxo++; doTween(); } voltar_mc.onRelease = function():Void { if (indiceFluxo <= 1) { // Se estava na penúltima vez e foi para o deslocamento 0, desabilitar este botão. this.enabled = false; var cor:Color = new Color (voltar_mc); cor.setRGB(0xF4EEDD); } // habilito o botão avançar.. avancar_mc.enabled = true; var cor:Color = new Color (avancar_mc); cor.setRGB(0xff8200); indiceFluxo--; doTween(); } voltar_mc.enabled = false; var cor:Color = new Color (voltar_mc); cor.setRGB(0xF4EEDD); function doTween():Void { // finalmente a nossa função que vai movimentar o clip: var tempo:Number = 1; var modo:String = "easeInBounce"; // tente também "easeInQuad", "easeOutBounce", "easeInBounce" e outros modos de transição da classe Tweener. Have fun!;-> var xAlvo:Number = listaDePosicoes[indiceFluxo]; Tweener.addTween(tudo_mc, {_x:xAlvo, time:tempo, transitions:modo}); }
Este é o código da timeline principal.
E este, abaixo, é o do movie-clip que busca as fotos do xml:
System.useCodepage = true; //include "lmc_tween.as" // criando o objeto XML var meuXML:XML = new XML(); // ignorando os espaços em branco meuXML.ignoreWhite = true; // quando o XML carregar meuXML.onLoad = function():Void { // variável que retorna a altura de todos os thumbs juntos _global.altura = (thumb._height*meuXML.childNodes[0].childNodes.length+meuXML.childNodes[0].childNodes.length*2); // criando um loop for for (i=0; i<meuXML.childNodes[0].childNodes.length; i++) { // duplicando o movieclip thumb duplicateMovieClip("thumb", "thumb"+i, i+1); thumbs = _root.tudo_mc["thumb"+i]; // posição de cada thumb thumbs._x += (thumb._height+3)*i; // criando uma instância da classe MovieClipLoader var MCL1:MovieClipLoader = new MovieClipLoader(); // carregando um arquivo no objeto MCL1, de acordo com o primeiro nó do XML, o nó filho atual (i) do atributo thumb, movieclip alvo: thumbs.mostra MCL1.loadClip(meuXML.childNodes[0].childNodes[i].attributes.thumb, thumbs.aumentar.mostra); thumbs.onEnterFrame = function():Void { // variável que checa o progresso do objeto MCL1 progresso1 = MCL1.getProgress(this.aumentar.mostra); // texto do campo pct_thumb: bytes carregados / bytes totais * 100 + o sinal de porcentagem this.pct_thumb.text = Math.ceil(progresso1.bytesLoaded/progresso1.bytesTotal*100)+"%"; // se os bytes carregados forem iguais ao bytes totais, deixa o campo de texto invisível, se não, ele continua visível progresso1.bytesLoaded == progresso1.bytesTotal ? this.pct_thumb._visible=false : this.pct_thumb._visible=true; }; // variável de referência, que indica o nó atual thumbs.atual = i; thumbs.campo.text = i+1; thumbs.imagemGrande = this.childNodes[0].childNodes[i].attributes.imagemGrande; thumbs.titulo = this.childNodes[0].childNodes[i].attributes.titulo; thumbs.descricao = this.childNodes[0].childNodes[i].attributes.descricao; // retirando a mãozinha do mouse thumbs.btn.useHandCursor = true; // quando clicar no movieclip thumbs.btn.onRelease = function():Void { // abre link //getURL(""+meuXML.childNodes[0].childNodes[this._parent.atual].attributes.imagemGrande, "_blank"); // mesma lógica do MCL1 this.onEnterFrame = function():Void { progresso2 = MCL2.getProgress(_root.mc); _root.pct.text = Math.round(progresso2.bytesLoaded/progresso2.bytesTotal*100)+"%"; progresso2.bytesLoaded == progresso2.bytesTotal ? _root.pct._visible=false : _root.pct._visible=true; }; // definindo o texto do campo de texto descrição, de acordo com o nó atual do atributo desc }; // quando passar o mouse thumbs.btn.onRollOver = function():Void { // pequena mudança de contraste _root.tudo_mc["thumb"+this._parent.atual].aumentar.gotoAndPlay(2); _root.tudo_mc["thumb"+this._parent.atual].swapDepths(getNextHighestDepth()); }; // quando tirar o mouse thumbs.btn.onRollOut = function():Void { // voltando ao normal _root.tudo_mc["thumb"+this._parent.atual].aumentar.gotoAndPlay(6); }; thumbs.btn.onPress = function():Void { // Quando Clicar na imagem _global.descricao = _root.tudo_mc["thumb"+this._parent.atual].descricao; _global.TituloFoto = _root.tudo_mc["thumb"+this._parent.atual].titulo; _global.imagemGrande = _root.tudo_mc["thumb"+this._parent.atual].imagemGrande; _root.popup.gotoAndPlay(2); }; } }; // carregando o arquivo XML meuXML.load("galeria01.xml"); System.useCodepage = true;
Se alguém puder me ajudar ficaria mto grata mesmo
Abraços