O Swiz, a partir da versao 1.1, faz a distinção dos eventos levando em conta
tanto o type (String da constante) como também o TIPO DA CLASSE de Evento.

Sabendo disso, Vc pode fazer assim:


//Criar uma classe que define os eventos em comuns
public class CRUDEvents extends Event {
    public static const SALVAR : String = "SalvarEvent";
    ....

}


//Criar uma classe de eventos específica para tais cadastros q extendem dos
eventos em comum...
//Uma para o cadastroA
public class CadastroAEvent extends CRUDEvent {

}

////Outra para o cadastroB
public class CadastroBEvent extends CRUDEvent {

}


e nos métodos que vc irá mediar os eventos, vc declara as metadatas

[EventHandler(event="CadastroAEvent.SALVAR")]
public function salvaCadastroA():void { .... }

E, se quiser em outra classe pode usar ... REPARE que a classe de Evento é
diferente da anterior
[EventHandler(event="CadastroBEvent.SALVAR")]
public function salvaCadastroB():void { .... }


e na hora de disparar vc faz:

//evento 1
var evt : CadastroAEvent = new CadastroAEvent(CadastroAEvent.SALVAR);
dispatchEvent(evt);

//evento 2
var evt : CadastroBEvent = new CadastroBEvent(CadastroBEvent.SALVAR);
dispatchEvent(evt);



Repare que os dois eventos ("CadastroAEvent" e "CadastroBEvent") usam a
MESMA constante "SALVAR", logo o type (String) é o mesmo para os dois.
Naturamente o Flash Player executaria os dois métodos, certo? Mas o Swiz é
esperto.. garoto inteligente... no momento q um evento é disparado, ele irá
interceptar o evento e por reflexão ele identificará qual o TIPO DA CLASSE
do evento e entao executará o método certo, e nao os dois (como se fosse o
comportamento padrao).


Sacou? ;)

long life to swiz....
















Em 29 de junho de 2011 09:00, Leonardo Ribeiro <[email protected]>escreveu:

> Pessoal,
>
> Estou usando o Swiz para o desenvolvimento de um novo projeto e existem
> alguns "cadastrinhos auxiliares" que por exemplo a tela tem apenas um ou
> dois campos como 'Descrição' e/ou 'Sigla'.
> Bem, supondo que tenho os "cadastrinhos" A e B, eu tenho no meu projeto as
> classes:
>
> CadAEvent e CadBEvent mas ambas as classes tem as "mesmas"
> informações...como segue
>
> public static const SAVE:String = "CadAEvent .SAVE";
>  public static const SAVE_CALLBACK:String = "CadAEvent .SAVE_CALLBACK";
>  public static const REMOVE:String = "CadAEvent .REMOVE";
>  public static const REMOVE_CALLBACK:String = "CadAEvent
> .REMOVE_CALLBACK";
>  public static const SEARCH:String = "CadAEvent .SEARCH";
> public static const SEARCH_CALLBACK:String = "CadAEvent .SEARCH_CALLBACK";
>
> Para o CadBEvent é a mesma coisa somente mudando de CadAEvent.SAVE
> para CadBEvent.SAVE, e etc...
>
> O mesmo ocorre para os PM e Controller. Claro que cada um chama seu
> respectivo "save", "remove" etc..
> Mas a estrutura eu acabo fazendo um Ctrc+C Ctrc+V mesmo e só faço pequenas
> alterações, como mudar o
> prefixo do nome do Event de CadAEvent para CadBEvent...
>
> Eu até pensei em criar a classe "CadastrinhosEvent" com SAVE, REMOVE, etc,
> mas se ambos os controllers
> mediarem o mesmo event da problema né?
>
> Tem alguma forma de eu criar uma classe padrão sem ter que ficar
> praticamente fazendo Ctrc+C Ctrc+V ?
>
> --
> []'s
> Leonardo
>
> Linux User #488650
> Ubuntu User #27045
> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev




-- 
Mario Junior
http://blog.mariojunior.com/
@mariojunior

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a