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 ou um Trackback
   

4 Comentários

  1. Liliana
    June 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. June 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?

  3. walo
    May 29, 2009 às 11:03 am | Permalink

    Hola, muy util tu articulo pero a mi me falta por implementar una cosa…¿Sabes cómo centrar la alerta en la pantalla? y ¿cómo poner el típico sombreado de fondo de Flex cuando sale la alerta?. Muchas Gracias.

  4. Wallas
    March 14, 2010 às 11:07 pm | Permalink

    Ah ainda a possibilidade de fazer um pouco mais simples:

    AS3:
    Alert.yesLabel=”Sim”; \\Configura o Label do botão Yes para Sim
    Alert.noLabel=”Não”; \\Configura o Label do botão No para Não
    //Se essa dos labels configuração for colocada no .as principal, todos os botões serão mostrados com o Label alterado!

    Alert.show(“teste”,”!!”,3,null,alertListener); // o terceiro parametro com valor = 3 é para exibir os botões Yes e No

    private function alertListener(evento:CloseEvent):void{
    if (evento.detail==Alert.YES){
    Alert.show(“Clicou em Sim”);
    } else if (evento.detail==Alert.NO) {
    Alert.show(“Clicou em Não”);
    }

Deixe um comentário

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

*
*

Spam Protection by WP-SpamFree