Ir para conteúdo

POWERED BY:

Arquivado

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

VodkaCitrus

Problema com loop

Recommended Posts

Tenho uma linha e um MC, toda vez que essa linha colide com o MC, ele da play num som, mas enquanto eles colidem, fica dando play direto (chega até fazer eco) até o fim da colisao.

 

Como devo proceder?

 

 

OBS: Versão beta a caminho!

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque uma variavel para fazer true or false

 

Se já tiver dado play 1 vez a variavel vira false e não fica true até uma nova colisão

Pode fazer isso com if e else

 

Abraços

 

Até vai mais ainda tem um problema

Essa é a minha funçao:

function hitTest(e:Event):void
{
	played = true; // Atençao aqui!

	if (e.target.page == s.value)
	{
		e.target.visible = true;
	
 if(e.target.hitTestObject(pt))
{								
if (played)
{
        trace("Som");
		e.target.gotoAndPlay (1);
		played = false; //
}
		
 }
	}
 else
	{
		e.target.visible = false;
	}
	if (e.target.y < 519.5)
	{
		e.target.y =511.3;
	}
	else if ( e.target.y >= 519.5)
	{
		e.target.y = 550;
	}
	
	if (clear)
	{
		e.target.visible = false;
		e.target.x = -100;
		
	}
}

Repare que se eu remover o played = true dali de cima, o loop será evitado, mas também só tocará uma vez, pois nos próximos MCs a bollean estará false e ai impedirá de eles tocarem novamente.

Já se eu deixar do jeito que ta, com o played = true lá em cima, não muda absolutamente nada, pois o loop continuará a renovar o estado da bollean.

A idéia seria criar um if identificando se mudou de e.target, se por acaso tiver mudado, ai sim, a bollean poderá ser true, para que seja false novamente. e assim por diante...

 

Como isso deveria ser feito?

 

 

Ah e outra coisa, repare lá no final minha bool (clear), que é usada para "apagar" o MC do stage, mas ele siplesmente está removendo sua posiçao e deixando visibilidade falsa, eu tentei usar um removeChild mas nao funciona com o e.target, existe uma outra maneira ou terá que ser assim mesmo?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque você nao remove o fator da colisao, tipo se é um drag você para o drag se for um enterframe você remove o evento e ai, ele nao vai mais colidir.

 

Mas do jeito que o thiago citou ai acima, funciona, você deve ter errado alguma coisa nesse if-else.

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas se eu remover o listener depois, se eu quiser q o som saia novamente no mesmo MC, não vai poder sair..

 

eu implementei o codigo pra por um limite de tempo entre cada som, mas mesmo assim fica dando loop.

Lembrando que cada faixa de audio está dentro do frame 2 do MC, no modo "EVENT".

 

Se quiserem, me adicionem no msn para ver em primeria mão, oque está acontecendo aqui.

Pois não disponibilizarei minha idéia e todo o meu código aqui no fórum, até que o projeto seja concluído.Irei limitar a visualização do fla e do swf aos 4 primeiros que me adicionarem, por questão de direitos autorais.

 

joaoocara_11@hotmail.com

 

 


function createcc ()
{
		 var ccstr:CC = new CC();   
   ccstr.x= pop.x ;
   ccstr.y=pop.y;
   ccstr.width = sw;
   ccstr.height = sh;
   ccstr.page = s.value;
   addChild(ccstr); 
 ccstr.addEventListener (MouseEvent.CLICK, clickcc);
 ccstr.addEventListener(Event.ENTER_FRAME, hitTest);
}

var i=15;
function hitTest(e:Event):void
{
	i+=1;
	
	if (e.target.page == s.value)
	{
		e.target.visible = true;
	
 if(e.target.hitTestObject(pt))
{								
if (played)
{
	if (playing)
	{
        trace("Som: " + i);
		i=0;
		trace("Zero: " + i);
		e.target.gotoAndStop (1);
		e.target.gotoAndPlay (2);

		
	}
}
		
 }
  if (i > 15)
	{
	played = true;
	}
	else if ( i <=15)
	{
		played = false;
	}
	
	
	}
 else
	{
		e.target.visible = false;
	}
	if (e.target.y < 519.5)
	{
		e.target.y =511.3;
	}
	else if ( e.target.y >= 519.5)
	{
		e.target.y = 550;
	}
	
	if (clear)
	{
		e.target.visible = false;
		e.target.x = -100;
		
	}
}

até logo.

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.