Ir para conteúdo

Arquivado

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

baigou

Ação durante utilização do botão.

Recommended Posts

Boa noite users, estou com uma pequena dúvida diante de ações que serão efetuadas com o uso de um botão.

 

Criei um botão e utilizei o seguinte comando:

cima.addEventListener(MouseEvent.CLICK, ircima);

function ircima(event:MouseEvent):void
{
	 personagem.rotation = 0;
	 personagem.y -= velocidade;
	 personagem.y -= 5;
}

Porém depois me dei conta que não é exatamente o que eu preciso, o que eu precisava era que enquanto eu estivesse apertando o botão, ele fazer a ação. E obviamente, quando eu soltar ele parar. Mas o uso atual está sendo de CLICK, conforme eu for clicando ele vai andando, alguém poderia me dizer como eu poderia fazer da forma que citei? (Enquanto estiver pressionando a tecla, ir efetuando a função).

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

As outras opções ao "CLICK" seriam "MOUSE_UP" e "MOUSE_DOWN", mas não serviria no seu caso, pois executaria a função ou ao clicar ou ao soltar então, imagino que você deva associar a propriedade "buttonDown" (boolean) a um evento "ENTER_FRAME" que é uma espécie de loop... Em outras palavras, a função (ircima) seria executada enquanto pressionado o botão, pois qdo soltar, mudaria a condição da propriedade "buttonDown" e sairia do "ENTER_FRAME" encerrando a função.

 

Att.

 

 

Pra quem está um bom tempo sem mexer com Flash até que não passei longe na sugestão acima, resolvi brincar um pouquinho e cheguei ao resultado abaixo, atende a sua necessidade mas provavelmente deve existir soluções melhores e mais elegantes, de qualquer forma alguem com mais conhecimento pode se manifestar.

cima.addEventListener(MouseEvent.MOUSE_DOWN, ircima);function ircima(evt:MouseEvent):void {	stage.addEventListener(MouseEvent.MOUSE_UP, ircimaStop);	addEventListener(Event.ENTER_FRAME, ircimaLoop);	function ircimaLoop(evt:Event):void {		//insira aqui os códigos do movimento;	}	function ircimaStop(evt:Event):void {		removeEventListener(Event.ENTER_FRAME, ircimaLoop);	}}

Explicando: Criamos a função "ircima" declarada no evento "MOUSE_DOWN" (pressionar o botao), dentro desta mais duas funções, uma para criar o "ENTER_FRAME" (como disse uma espécie de loop) e outra para interromper este "loop", justamente quando soltar o botão (MOUSE_UP), neste caso em qualquer área do palco.

 

Att.

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.