Ir para conteúdo

POWERED BY:

Arquivado

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

Victor Ferreira

[Resolvido] chamar função com setTimeout que receba parâmetros

Recommended Posts

Galera, quem conhece um pouco de AS 3.0 sabe como é: você cria um EventListener, chama uma função quando o evento ocorre, mas não dá pra passar parâmetros pra ela. Existe na verdade um hack que se cria, ou uma orientação a objetos muito louca.

 

Então estou tentando criar um Lightbox personalizado, pra isso tem uma função que cria um temporizador sempre que a condição é verdadeira. Esse temporizador chama a mesma função, e funciona recursivamente até que a condição seja falsa e ai não cria mais temporizador nenhum.

 

O PORÉM: não dá pra passar parâmetros pra essa função. Já vi o lightbox funcionando, mas eu tenho que declarar variáveis do lado de fora da função, globalmente.

 

function mostraImagem(obj_id){
			var obj = document.getElementById(obj_id);
			var obj_m = document.getElementById('box_maior');
			
			var largura = obj.offsetWidth;
			var altura = obj.offsetHeight;
			
			var largura_m = obj_m.offsetWidth;
			var altura_m = obj_m.offsetHeight;
			
			modificaAltura(alt, alt_m, obj);
		}
		
			
		function modificaAltura(alt, alt_m, obj){
			
			obj.style.height = alt+1;
			
			if(alt < alt_m){
				alt+=1;
				var time = setTimeout("modificaAltura(alt, alt_m, obj)", 50);
			}
			
		}

a função de cima é disparada pelo evento, cria variáveis com o tamanho de dois boxes, e outras para os próprios elementos. Depois, ela chama a função modificaAltura, que recebe 3 parametros e vai modificando o tamanho do box e testando se ainda está de acordo fazer a alteração de tamanho. se estiver, em 50 milesegundos ele chama novamente esta função and on and on.

 

não funciona.

 

funciona assim:

...
modificaAltura();
		}
		
		var alt = 100; alt_m = 400;
		
		function modificaAltura(){
			var obj = document.getElementById('box');
			obj.style.height = alt+1;
			
			if(alt < alt_m){
				alt+=1;
				//document.write(alt);
				var time = setTimeout("modificaAltura()", 50);
			}
...

alguém tem uma sugestão?? =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

RESOLVIDO

var time = setTimeout(function(){modificaAltura(alt, alt_m, obj)}, 50);
sim, o setTimeout tem que estar assim. o primeiro parâmetro dessa função é na verdade uma função que chama a função modificaAltura passando a droga dos três parâmetros. Cara... sem palavras. provavelmente dá pra fazer um lance desses em AS 3.0

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.