scorpyons 0 Denunciar post Postado Agosto 22, 2006 Galera, estou criando um scroll thumbnail dinâmico, puxando os dados do xml ... O scroll está funcionando normalmente. Só que quando clico em qualquer thumbnail, ele carrega sempre a mesma imagem. Nao estou conseguindo achar o erro. Se alguem puder me dar uma ajuda eu agradeço ... Aqui está o código: var panel:MovieClip = _root.createEmptyMovieClip("panel", _root.getNextHighestDepth()); var mask:MovieClip = _root.createEmptyMovieClip("mask", _root.getNextHighestDepth()); var stroke:MovieClip = _root.createEmptyMovieClip("stroke", _root.getNextHighestDepth()); var holder:MovieClip = _root.createEmptyMovieClip("holder", _root.getNextHighestDepth()); //var tholder:MovieClip = panel.createEmptyMovieClip("tholder", panel.getNextHighestDepth()); var thumb:MovieClip; var thumbX:Number = 5; var xml:XML = new XML (); xml.ignoreWhite = true; //cria os objetos with (mask) { beginFill (0x000000,10); lineStyle(0,0x000000,10); lineTo (0,100); lineTo (350,100); lineTo (350,0); lineTo (0,0); endFill(); _x = 100; _y = 439; } panel._x = 100; panel._y = 439 panel.setMask(mask); with (stroke) { lineStyle(0,0x000000,10); lineTo (0,100); lineTo (350,100); lineTo (350,0); lineTo (0,0); _x = 100; _y = 439; } with (holder) { beginFill(0x000000,10); lineStyle(0,0x000000,10); lineTo (0,400); lineTo (500,400); lineTo (500,0); lineTo (0,0); endFill(); _x = 25; _y = 0; } function galeria(pLista:Array):Void { var qtd:Number = pLista.length; for (var i:Number=0; i<qtd; i++) { var atual:MovieClip = panel.createEmptyMovieClip("thb"+i, panel.getNextHighestDepth()); atual.imagem = pLista.attributes.thumbs; atual.imagem2 = pLista.attributes.urls; var carregador:MovieClip = atual.createEmptyMovieClip("carregador", atual.getNextHighestDepth()); carregador.loadMovie(atual.imagem); atual.numb = i; atual._y = 0; atual._x = thumbX; thumbX += 120; atual.onRelease = function () { holder.loadMovie(atual.imagem2); } } } panel.onRollOver = panelOver; function panelOver () { speed = 5; this.onEnterFrame = scrollPanel; delete this.onRollOver; } var b = stroke.getBounds(_root); function scrollPanel() { if (_xmouse<b.xMin||_xmouse>b.xMax||_ymouse<b.yMin||_ymouse>b.yMax) { this.onRollOver = panelOver; delete this.onEnterFrame; } var xDist = _xmouse - 275; panel._x += -xDist/speed; if (panel._x >= 100) { panel._x = 100; } if (panel._x <= -(panel._width-430)) { panel._x = -(panel._width-430); } } xml.onLoad = function (success:Boolean):Void { if (success) { //monta a galeria (função) galeria (this.firstChild.childNodes); } else { trace ("ooooops"); } }; //carrega o arquivo XML xml.load ("list.xml"); Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Agosto 22, 2006 Acredito que seja naquele onRelease no... final da oitava "estrofe" hehe. Tenta assim:atual.onRelease = function () {holder.loadMovie(this.imagem2);}Flw Compartilhar este post Link para o post Compartilhar em outros sites
scorpyons 0 Denunciar post Postado Agosto 23, 2006 Cara ... era isso mesmo !!! Valeu ...Agora estou tentando fazer com q cada thumb apareca um de cada vez ... nao tenho ideia de como fazer ...você sabe como ??Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Agosto 23, 2006 Vamos lá. A função que cria os thumbs é a da 8ª estrofe, certo? E dentro dela quem cria um por um é o laço de repetição FOR (terceira linha). Esse laço executa várias vezes (no caso o numero de vezes é igual ao número de thumbs) mas muito rápido, quase que instantaneamente. Para fazermos essas ações executarem de uma forma mais lenta, podemos usar o setInterval (para ver bastantes exemplos disso faça uma busca no fórum). Vamos ao código: function galeria(pLista:Array):Void {var qtd:Number = pLista.length;//////parte que mudei////////var i:Number=-1function botaThumb():Void {if (i<qtd) {i++;} else {clearInterval(intervalo);}trace(i)/////////////////////////////var atual:MovieClip = panel.createEmptyMovieClip("thb"+i, panel.getNextHighestDepth());atual.imagem = pLista[i].attributes.thumbs;atual.imagem2 = pLista[i].attributes.urls;var carregador:MovieClip = atual.createEmptyMovieClip("carregador", atual.getNextHighestDepth());carregador.loadMovie(atual.imagem);atual.numb = i;atual._y = 0;atual._x = thumbX;thumbX += 120;atual.onRelease = function () {holder.loadMovie(atual.imagem2);}}///aqui também mudeiintervalo = setInterval(botaThumb, 1000);}Vamos entender a primeira parte que eu mudei. Ao invés do FOR eu coloquei uma função que funciona parecido. Ela inicia a variável 'i', e verifica se ela é menor que a quantidade. Se for, soma 1 à 'i'; se não for limpa o intervalo, que seria terminar a repetição. Essa função é executada pelo 'intervalo' a cada 1 segundo (1000 miléssimos) e este é interrompido quando o número de 'i' for igual do número total de thumbs. Sacou? Qq dúvida posta aí. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Flw Compartilhar este post Link para o post Compartilhar em outros sites
scorpyons 0 Denunciar post Postado Agosto 23, 2006 Legal cara ... funcionou ... única coisa é que depois de alguns segundos que está rodadando, da um erro no output de "Error opening URL "file:///C|/Desktop/XML%20Sample/undefined" ... mas continua funcionando mesmo com o erro ...o q será ???Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Agosto 23, 2006 Me faz um favor? Posta a sequência dos outputs que aparece? (os números que vem no trace(i) ) Compartilhar este post Link para o post Compartilhar em outros sites
scorpyons 0 Denunciar post Postado Agosto 24, 2006 cara esses são os numeros que aparecem do trace: 0123456789101112131415161718192021222324252627282930Error opening URL "file:///E|/Downloads/XML%20Sample/undefined"30Error opening URL "file:///E|/Downloads/XML%20Sample/undefined"parece que ele da pau no 30, ou sei lá se ele continua lendo o xml ....Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Agosto 24, 2006 A, esqueci. Coloca um 'return;' sem aspas depois do clearInterval. É que ele está limpando o intervalo para parar de executar, mas ainda executa o resto da função. Com o return; ele pára de executar.Flw Compartilhar este post Link para o post Compartilhar em outros sites
scorpyons 0 Denunciar post Postado Agosto 24, 2006 Cara, ainda nao funcionou ... Agora ele está parando no 29 ...Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Agosto 24, 2006 Mas não era esse o objetivo? Compartilhar este post Link para o post Compartilhar em outros sites
scorpyons 0 Denunciar post Postado Agosto 25, 2006 Ah ... é que eu achei que deu erro pq na tela de output apareceu o aquela mesma mensagem, só que parou no 29 ... achei que nao fosse aparecer nada ... mas beleza ... Obrigado pela ajuda cara, você tem ajudado bastante ... Agora vou fazer esse teste de cores que o amigo comentou ...FalowAbraços Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Agosto 25, 2006 É que não exatamente como está seu XML, mas se quiser pode colocar assim: function botaThumb():Void {if (i<qtd-1) {//tira o último registro que tá dando erroi++;} else {clearInterval(intervalo);return;} Flw. Compartilhar este post Link para o post Compartilhar em outros sites
scorpyons 0 Denunciar post Postado Agosto 25, 2006 Cara ... agora deu certinho, sem nenhum erro ... mas pq esse -1 resolveu ??? Queria entender ...Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Agosto 25, 2006 É porque ele verificava até o 30, e no 30 dizia que era undefined (como está no output). Então eu fiz ele pegar até um numero antes, no caso o 29 (que tem algo diferente de undefined, por isso que não aparece no output).É isso, abraço Compartilhar este post Link para o post Compartilhar em outros sites