Ir para conteúdo

POWERED BY:

Arquivado

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

hargon

[Resolvido] Erro ao executar função, ela é carrega

Recommended Posts

Criei esse código abaixo para carregar movieclip da biblioteca e exibir de forma alternada.

 

Quando executo a função que carrega os mcs, a primeira vez executa 4 vezes. Depois é executada normalmente.

 

Por que isso?

var movieAdd:MovieClip = mcfotoesq.attachMovie("gpfoto01","mcfotoesq0",10,{_x:0, _y:0});

var fotosArray:Array = new Array("gpfoto01" , "gpfoto02" , "gpfoto03" , "gpfoto04");

function fotosRotativas(i:Number):Void{
	clearTimeout(inicio);	
	mcfotoesq.attachMovie(fotosArray[i],"mcfotoesq" + i,10,{_x:0, _y:0});	
trace(i);
	i == (fotosArray.length - 1) ? i = 0 : i++;

	inicio = setTimeout(fotosRotativas,5000,i);
}

var inicio:Number = setTimeout(fotosRotativas,7000,1);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um fla aqui com os linkages que usou e funcionou normalmente, o erro pode estar na sua timeline de estar passando por essa timeline mais de uma vez e só depois parando, tente inserir uma linha parando o intervalo sempre antes de chamar o mesmo, como vou por abaixo, mas aqui funcionou tudo certo.

 

var movieAdd:MovieClip = mcfotoesq.attachMovie("gpfoto01","mcfotoesq0",10,{_x:0, _y:0}); 
 
var fotosArray:Array = new Array("gpfoto01" , "gpfoto02" , "gpfoto03" , "gpfoto04"); 
 
function fotosRotativas(i:Number):Void{ 
        clearTimeout(inicio);    
        mcfotoesq.attachMovie(fotosArray[i],"mcfotoesq" + i,10,{_x:0, _y:0});    
trace(i); 
        i == (fotosArray.length - 1) ? i = 0 : i++; 
 
        inicio = setTimeout(fotosRotativas,5000,i); 
} 
clearTimeout(inicio); 
var inicio:Number = setTimeout(fotosRotativas,7000,1);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu carneirinho, mas não entendi muito bem.

 

E você disse que deu tudo certo, mas chegou a ver a saída? Pq a imagem é exibida normalmente, a "olho nu" não mostra erro para o usuário.

 

Mandei escrever o valor i na saída e na primeira vez que a função é executada, é escrito 4 vezes, após a primeira vez ele escreve uma vez, até mesmo quando faz o loop e volta no primeiro movie.

 

Não postei o código inteiro para facilitar encontra o erro. Essa parte postada é a que está com erro, mas no resto do código tem um efeito fade, e aí é possível ver o erro ao carregar, pois fica piscando na tela durante o efeito.

 

No inicio do código eu usei...

var movieAdd:MovieClip = mcfotoesq.attachMovie("gpfoto01","mcfotoesq0",10,{_x:0, _y:0});

 

porque queria carregar o primeiro movie sem efeito. Já a partir do segundo deveria ter efeito, por isso chamo mais abaixo através do setTimout.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha bixo eu testei o código do carnerinho e o seu...

 

E não tem nada de errado... para fazer ele rodar tantas vezes como você ta falando.....

 

Acho que ta é rolando um conflito de variaveis... ou sua timeline ta andando rs

... mas não tem nada de errado não

 

Eis o teste que eu fiz e funcionou:

var movieAdd:MovieClip = mcfotoesq.attachMovie("bola1","mcfotoesq0",10,{_x:0, _y:0}); 
 
var fotosArray:Array = new Array("bola1" , "bola2" , "bola3" , "bola4"); 
 
function fotosRotativas(i:Number):Void{ 
    clearTimeout(inicio);    
    mcfotoesq.attachMovie(fotosArray[i],"mcfotoesq" + i,10,{_x:0, _y:0});    
    trace(i); 
    i == (fotosArray.length - 1) ? i = 0 : i++; 
    inicio = setTimeout(fotosRotativas,5000,i); 
} 

var inicio:Number = setTimeout(fotosRotativas,7000,1);

Até botei uma brincadeira com tween e fade... pra ver se dava algo... e deu em nada...

 

Sei lá o que pode ser

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pessoal. Desculpe pela insistência carneirinho.

 

Realmente criando um FLA separado, o código funcionou perfeitamente.

 

Por algum motivo, o mc principal onde era carregado os demais mc estava dentro de uma máscara (animada com shape) e ela que estava atrapalhando. A solução foi converter a animação do shape em mc.

 

Abraço moçada.

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.