Português:O Gaia Flow

Introdução
O Gaia tem uma sequência de ações que ocorrem quando o evento goto(branch) dispara o que eu chamo de Gaia Flow. A classe FlowManager está localizada em com.gaiaframework.flow.FlowManager. Existem cinco passos no Gaia Flow, e você pode fazer o hijack do framework em cada passo.


 * goto: Todo o flow começa a partir deste evento.
 * transitionOut: Faz a transição de saída de todas as páginas atuais que não pertencem ao novo branch.
 * preload: Carrega todos os arquivos necessários ao novo branch.
 * transitionIn: Faz a transição de entrada das páginas do novo branch. Obviamente, o preload precisa estar completo antes que isso ocorra.
 * complete: Ocorre uma vez que o flow esteja completo.



Tipos de transição do Gaia
O Gaia tem quatro tipos diferentes de flow da transição. Eles se chamam normal, preload, reverse e cross. Você pode controlar qual desses flows quer que o Gaia use, tanto pelo site.xml quanto no momento da execução. O Gaia pode usar qualquer combinação desses flows, em qualquer página do seu site.

Normal Flow
O flow normal faz a transição de saída do branch atual, carrega o novo branch e faz a transição de entrada. Este é o comportamento padrão do Gaia framework e funciona bem na maioria dos sites. Você pode sobrepor o flow padrão para o site, o que está detalhado na documentação do Site XML.


 * 1) transitionOut
 * 2) preload
 * 3) transitionIn
 * 4) complete

Preload Flow
O preload flow carrega o novo branch antes de começar a transição de saída. Você pode usar esse flow se quiser uma transição ininterrupta e suave, da saída para a entrada do novo branch.


 * 1) preload
 * 2) transitionOut
 * 3) transitionIn
 * 4) complete

Reverse Flow
O flow reverso carrega o novo branch e chama a transição de entrada antes da transição de saída. Este é um flow mais avançado, e com o devido planejamento, você pode fazer algumas transições bem interessantes. Uma possibilidade de uso para esse flow: se você quiser que os MovieClips do novo branch cubram os MovieClips do branch anterior antes que eles façam a transiçã de saída. Transições com máscaras, de revelar e apagar são boas candidatas ao reverse flow.


 * 1) preload
 * 2) transitionIn
 * 3) transitionOut
 * 4) complete

Cross Flow
O cross flow carrega o novo branch e chama transitionOut e transitionIn ao mesmo tempo. As páginas farão as transições out e in na mesma ordem, elas apenas acontecem simultaneamente. Event Hijackers com listeners para antes das transições out e in vão disparar de volta nessa ordem (primeiro out e então in). Se um dos branches leva mais tempo para terminar sua transição que o outro (se tiver mais páginas ou simplesmente demandar mais tempo), aquele que terminar primeiro vai disparar seu evento primeiro.

Por exemplo, se a transição de saída terminar antes da transição de entrada, afterTransitionOut vai disparar antes de afterTransitionIn.


 * 1) preload
 * 2) transitionOut and transitionIn
 * 3) complete



Transitions
Transições são como as páginas aparecem ou são removidas da tela. Transition Out faz a transição das páginas na saída, uma de cada vez, do final do branch que está mudando até a raiz. À medida que cada página do branch termina sua transição, sua parent começa a fazer a transição até que todas as páginas do branch tenham "saído".

Transition In funciona na direção oposta, fazendo a transição das páginas da raiz do branch até o final, depois que o branch tiver carregado.

Se um evento goto ocorrer em qualquer ponto durante o Gaia Flow, o Gaia vai interromper qualquer transição ou carregamento que estiver em andamento.

Caso o Gaia esteja no meio da transição, ele irá deixar a página atual terminar sua transição e então começar o processo novamente a partir do goto.

Caso esteja no meio do preloading, no AS3 ele irá abortar o carregamento imediatamente. No AS2 irá terminar o carregamento do arquivo que estiver em progresso (limitação do Flash anterior ao AS3) e só então irá então começar o processo novamente a partir goto.



Flow da Página
Page nodes tem o atributo opcional flow. Se você não utilizá-lo, o Gaia vai usar o flow padrão do site (que é "normal" a não ser que você tenha definido algum outro no site node). Você pode ignorar este comportamento can override this behavior definindo o atributo como "normal", "preload", "reverse" ou "cross".

O Gaia sempre vai usar o flow da página raiz da parte do branch que está mudando. Isso permite que você tenha diferentes flows em diferentes camadas dos seus branches.

Por exemplo, se você está indo de "index/nav/photos/family" para "index/nav/photos/friends" e a página "friends" tem o flow="preload", ela irá carregar a página "friends", então fazer a transição de "family" e a transição de entrada de "friends".

Se você está indo de "index/nav/photos/family" para "index/nav/videos/july2007" e a página "videos" tem flow="normal", como "videos" é o root branch ao trocar por "photos", irá usar o flow normal, e fazer a transição out para "family", em seguida "photos", e então fazer o preload de "videos" e "july2007", e fazer a transição in.

Durante a execução, você pode mudar o flow de uma página diretamente, definindo seu flow para qualquer um dos três tipos de flow. Use as Constantes de Flow quando estiver fazendo essa definição durante a execução. Verifique o método getPage na seção API para mais informações sobre como definir uma página como target diretamente.

Você também pode definir o flow global do site durante a execução. Veja o método setDefaultFlow na seção API para mais informações.