Bem, depois de uma duvida bem colocada no post que mostra como personalizar por completo um alert, com cores, icons, titulo, alpha, texto, etc… ( http://msdevstudio.com/blog/2008/02/05/personalizao-do-flex-alert-box-em-action-script/ ) venho agora mostrar um pequeno tutorial como saber qual o botão foi clicado num alert.
Primeiro, temos que compreender as 2 diferentes maneiras de mostrar um alert, a segunda maneira é mais complexa, mas mais “personalizavel”… pelo que agora depende principalmente das vossas necessidades.
A mais simples:
import mx.controls.Alert;
//Alert.show("texto","titulo",botões);
Alert.show("um alerta","com titulo",Alert.NO | Alert.YES);
A mais complexa:
import mx.controls.Alert;
var meuAlerta:Alert = new Alert;
meuAlerta.text="um alerta";
meuAlerta.title="com titulo";
meuAlerta.buttonFlags=Alert.NO + Alert.YES;
addChild(meuAlerta);
E voilá! Temos duas maneiras de mostrar os alertas, agora para sabermos que botão foi clicado (ao clicar o botão o Alert fecha e dispara um CloseEvent que no seu parametro .detail “traz” a informação do botão clicado, ou seja, para isso temos que escutar esse CloseEvent, fazendo assim:
na primeira maneira:
import mx.controls.Alert;
import mx.events.CloseEvent;
Alert.show("um alerta","com titulo", Alert.NO | Alert.Yes, null, fechado);
//a função fechado ao ser definida aqui indica ao alert que terá que escutar
//e chamar a função fechado quando ele for fechado ao clicar de um dos seu botoes
na segunda, basta adicionar antes do addChild() o seguinte:
meuAlerta.addEventListener(Event.CLOSE, fechado);
e finalmente a função que lida com os detalhes do evento close do nosso alerta:
private function fechado(evento:CloseEvent):void {
if(evento.detail==Alert.YES) //YES clicado
if(evento.detail==Alert.NO) //NO clicado
}
e está feito… podem ainda usar:
if(evento.detail==Alert.OK) //ok clicado
if(evento.detail==Alert.YES) //YES clicado
if(evento.detail==Alert.NO) //NO clicado
if(evento.detail==Alert.CANCEL) //CANCEL clicado
Bem simples, mas espero que seja util a alguém..
Abraço.









2 Comentários
Hola! Tengo mi hoja de estilos y necesito poner un icon en la alerta. De casualidad sabras como hacerle. Lo ke pasa es ke en los componentes no me acepta el [Embed(source="icon/Error.png")] silo en las Aplicaciones. Ok Gracias =D
Hola Liliana.
Pues bien, su problema puede resolverse poniendo por ejemplo:
[Embed (source="../img/img_check.png")]
public var iconCheck: Class;
que dice iconCheck como público, que ahora está siempre disponible en su aplicación y los componentes se pueden utilizar como cualquier icono de advertencia.
Sería esto?