Tutorial - Flex Alert; Capturando click.

   

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.

Deixe um comentário or Deixe um Trackback

2 Comentários

  1. Liliana
    Junho 27, 2008 às 6:24 pm | Permalink

    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

  2. Junho 28, 2008 às 6:32 am | Permalink

    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?

Deixe um comentário

O seu email nunca será publicado ou partilhado. Campos obrigatórios estão marcados com um *

*
*