Ir para conteúdo

POWERED BY:

Arquivado

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

juniormatrix

Redução de código

Recommended Posts

Olá

 

Venho mais uma vez pedir ajuda de vocês. Criei alguns 'movieclips' para serem botoes. No primeiro botão coloquei o código em AS3 abaixo:

 

btLink_mc.addEventListener(MouseEvent.ROLL_OVER, sobre);
function sobre(e:MouseEvent):void
{
	var colorTransforme:ColorTransform = new ColorTransform();
	colorTransforme.color = 0xC49D61;
	btthomasheinn_mc.transform.colorTransform = colorTransforme;
}

btLink_mc.addEventListener(MouseEvent.ROLL_OUT, sair);
function sair(e:MouseEvent):void
{
	var colorTransforme:ColorTransform = new ColorTransform();
	colorTransforme.color = 0xFFFFFF;
	btthomasheinn_mc.transform.colorTransform = colorTransforme;
}

Isso faz com que a cor do botão mude para vermelho e branco ao posicionar e retirar o mouse de cima dele. Mas a minha dúvida é: vou ter que repetir esse código em cada um dos demais botões? Não existe uma forma, através de funções, para que eu possa chamar o efeito no botão sem ter q repetir todo o código? Senão o código vai ficar muito extenso.

 

Espero que tenham me entendido. Se alguem puder me ajudar, fico grato.

 

Junior

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deveria utilizar

 

O this.transform.colorTransform = colorTransforme;

Ao invés de dar o nome do evento...

 

Ou e.target.currentTarget

 

Assim se você aplicar a ação a um mc... aquele Mc é quem vai ser alterado e mais nenhum

E ai você pode fazer varios mc terem a mesma ação.

 

No momento que você expecifica o MC você deixa de poder fazer isso.

De uma pesquisada em como trabalhar com evento

 

e.target

e.target.currentTarget

 

Etc

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você precisa fazer a mesma coisa pra mil objetos, claro que você nao vai escrever o mesmo codigo mil vezes, para isso existem as estruturas de repetições, ou Loop, de uma pesquisada.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Junior, você pode usar este mesmo código pra TUDO! pode haver BILHOES de objetos e todos vao se comportar da mesma forma, como fazer? simples!

 

packpage com.UI
{
public class UIButton
{

public function UIButton(txt:String)
{
btLink = new btLink();
addChild(btLink);
btLink.TextLabel.text = txt;
btLink_mc.addEventListener(MouseEvent.ROLL_OUT, sair);
btLink_mc.addEventListener(MouseEvent.ROLL_OVER, sobre);
}

protected function sobre(e:MouseEvent):void{
        var colorTransforme:ColorTransform = new ColorTransform();
        colorTransforme.color = 0xC49D61;
        btthomasheinn_mc.transform.colorTransform = colorTransforme;
}

protected function sair(e:MouseEvent):void{        
        var colorTransforme:ColorTransform = new ColorTransform();
        colorTransforme.color = 0xFFFFFF;
        btthomasheinn_mc.transform.colorTransform = colorTransforme;
}
}
}

 

packpage com.UI{
public class Menu{
public function Menu(){
var btHome:UIButton = new UIButton("home");
var btCadastro:UIButton = new UIButton("cadastro");

addChild(btHome);
addChild(btCadastro);
}
}
}

 

você ainda pode fazer um método com var args e fazer ele addchild de acordo com os itens da array var args, e add os eventos de cada um também ;)

 

A classe UIButton já tera a função de mouse on e mouse over dentro dela, assim não havendo necessidade de escrever várias vezes o mesmo código.

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.