Usando ViewControllers uteis - netoleal/ASF2 GitHub Wiki

Alguns ViewControllers úteis

View Controllers

O ASF possui algumas classes úteis que você pode usar em seus projetos. Algumas delas:

asf.core.controllers.InOutController

Essa classe é útil para usar MovieClips com transições de "entrada" e "saída" baseadas em Timeline.

Uso:

var headerController:InOutViewController = new InOutViewController( new HeaderMC( ) );

this.addChild( headerController.view );

header.animateIn( true ); //ou animateOut para "sair"

O InOutViewController funciona da seguinte forma:

No exemplo acima, HeaderMC é um MovieClip exportado em um SWC. Para integrar ele corretamente com o InOutViewController, você deve criar a animação na timeline dele da forma como quiser e, para integrar, você define "labels" nos frames da timeline para marcar os estados. O InOutViewController procura por labels específicos para conseguir identificar sua animação. São eles:

  • in Início da animação de entrada
  • inEnd Fim da animação de entrada
  • out Início da animação de saída
  • outEnd Fim da animação de saída
  • inOut Entrada e saída no modo avança/retrocede

Quando o método animateIn é chamado, o InOutViewController controla a timeline do MovieClip target de forma com que ele execute o trecho da timeline entre os labels "in" e "inEnd". O mesmo acontece com o "animateOut" e os frames "out" e "outEnd"

Você também pode fazer animações mais simples usando a técnica de avança/retrocede. Para isso basta fazer a animação de entrada e marcá-la com o label "inOut". Dessa forma o método animateIn irá avançar a timeline até o fim e o animateOut irá executá-la ao contrário até o início.

Os métodos animateIn e animateOut retornam um objeto Sequence para você fazer sequenciamento de animações. Por exemplo:

meuController.animateIn( ).queue( fazAlgoQuandoTerminarAnimacao, "com", "parametros" );

asf.core.viewcontrollers.ButtonViewController

O ButtonViewController é uma classe que extende a InOutViewController. Portanto tem as mesma funcionalidades com algumas adições. O comportamento de animateIn e animateOut é automaticamente relacionado com os eventos de Mouse. Ou seja, o Mouse over e Mouse out já ficam funcionando automaticamente.

Ele também vai usar labels específicos na timeline do MovieClip. Você pode usar os mesmos que o InOutViewController ou pode ser mais específico.

Os frames suportados são:

  • in Início da animação de entrada
  • inEnd Fim da animação de entrada
  • out Início da animação de saída
  • outEnd Fim da animação de saída
  • over Início da animação de Mouse Over
  • overEnd Fim da animação de Mouse Over
  • overOutEnd Fim da animação de Mouse Out (o início da animação de out é sempre o frame atual nesse caso)
  • inOut Entrada e saída no modo avança/retrocede (também funcionando como MouseOver/MouseOut)

Uso

var button:ButtonViewController = new ButtonViewController( new ButtonAsset( ), { 
	over: section.application.sounds.getSoundItem( "dclick" ), 
	click: section.application.sounds.getSoundItem( "click" ) 
} );

O construtor do ButtonViewController suporta um segundo parâmetro opcional. Esse parâmetro serve para você conectar objetos asf.core.media.SoundItem ao evento "over", "out" e "click".

asf.core.viewcontrollers.ShowHide

Esse é um view controller simples que contém funcionalidades de FadeIn/FadeOut nativas. É bastante útil para aqueles controles que aparecem e somem da tela quando você está sem saco de implementar.

Exemplo:

var mensagem:ShowHide = new ShowHide( this.$mensagem );

mensagem.show( );

Os métodos show e hide também retornam uma instância de Sequence e aceitam delay. Exemplo:

var mensagem:ShowHide = new ShowHide( this.$mensagem );

mensagem.show( 1500 ).queue( fazAlgoDepois );

Vale a pena dar uma olhada nos controllers úteis do ASF. Eles estão no package asf.core.viewcontrollers.