Ir para conteúdo

POWERED BY:

Arquivado

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

scorpyons

Onde está o erro ???

Recommended Posts

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

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

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

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

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

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

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

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

É 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

É 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

×

Informação importante

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