Jun
25

Meeting AUG dia 28 de Junho

No próximo dia 28 terá lugar mais um evento do Adobe User Group que terá início pelas 17 horas. O local do evento será novamente nas instalações da Flag e irá ser composto por 3 tópicos

A apresentação do Mihai será assistido no local através de uma sessão de connect.
No final do evento, será sorteado uma licença de um software da Adobe.
As inscrições para participar deverão ser feitas aqui.




Jun
17

AS3 - Ciclo de criação de um componente

Ao percorrer a documentação da Adobe, reparei num resumo bastante interessante que fala do ciclo de execução/criação de cada componente da nossa aplicação. É incrível como cada simples botão ao ser adicionado a um container tem uma dezena de procedimentos até que seja disparado o evento creationComplete. Para quem já criou/estendeu um componente via ActionScript sabe bem do que falo, mas aqui vai a explicação.

Vou falar apenas do processo que acontece por detrás de um adicionar um botão como child a um container (Box) com o simples código:

// Criar uma box, um botão, definir o label e adicionar como child
var boxContainer:Box = new Box();
var b:Button = new Button()
b.label = “Enviar”;
boxContainer.addChild(b);

O Flex, procederá da seguinte forma:

1. É chamado o componente construtor (new Box e depois new Button)

2. Chamado o setter (b.label=) e actualizado todo o componente ( muitas das vezes são chamados métodos de actualização para definirem todo o layout: invalidateProperties(), invalidateSize(), ou invalidateDisplayList() )

3. Adiciona como child (filho) do box. Aqui o Flex faz a maior parte do trabalho, executando-se a  seguinte ordem:

4. Define a propriedade parent do componente para fazer referencia ao seu “container”.

5. Calcula e define o estilo/”style” de todo o componente.

6. Dispara o evento preinitialize do componente.

7. Chama o método createChildren() do componente.

8. Chama os métodos invalidateProperties(), invalidateSize(),  e invalidateDisplayList() para obrigar a serem disparadas/chamadas os métodos commitProperties(), measure(), ou updateDisplayList() no próximo evento render. A única excepção a estes acontecimentos, é que o flex não chama o método measure()  quando o “user/programador” define a altura e largura do componente.

9. Dispara o evento initialize no componente. Nesta altura todos os childs (childrens) no componente são inicializados, mas o componente ainda não foi correctamente definido no seu tamanho, nem processado o seu layout. Este evento pode ser usado para definir /executar procedimentos extra no componente antes que seja completamente processado.

10. Dispara o evento childAdd no componente “pai” / “parent”.

11. Dispara o evento initialize do seu componente “pai” / “parent”.

12. Durante o próximo evento render o flex faz as seguinte acções:

  • Chama o métodos pela seguinte ordem:
  1. commitProperties();
  2. measure();
  3. layoutChrome();
  4. updateDisplayList();
  • Finalmente é disparado o evento updateComplete no componente.

13. O Flex, depois deste processo ainda poderá disparar eventos de renderização ( render ) se os métodos commitProperties(), measure(), ou updateDisplayList() forem executados/chamados através dos métodos invalidateProperties(), invalidateSize(), ou invalidateDisplayList().

14. Depois do ultimo evento render ser chamado, o flex executa as seguintes acções:

  • Coloca o componente visível ( .visible=true; ).
  • Dispara o evento creationComplete no componente. O componente é dimensionado e processado para o layout. Este evento é apenas disparado uma única vez e só quando o componente é criado.
  • Dispara o evento updateComplete no componente, este evento também é disparado quando são alteradas quaisquer definições do componente, como layout, posição, tamanho ou qualquer alteração das características visuais.

A maior parte do trabalho de configuração, definição, e renderização de um componente acontece que este é adicionado a um container ( método addChild() ), isto porque enquanto o componente não for adicionado a um container, o Flex não consegue saber o seu tamanho, definir as propriedade “in-line”/”inheriting” ou desenha-lo no ecrã.

Perceber estes passos é essencial para conhecer  as propriedades e as operações que são executadas aquando da criação de um componente. Ajuda-nos também a perceber melhor porque é que às vezes temos certos erros no nosso código bem como a entender o processo de criação de um componente, o que se torna muito útil para criarmos o nosso próprio componente.

Artigo original aqui (EN)

Este artigo está disponivel em pdf para download. (link externo - www.msdevstudio.com)




Jun
08

RiaPT agora no Blip.TV

Todos os videos que foram até hoje filmados pelo RiaPT foram agora migrados para um canal próprio no Blip.TV. Todos os futuros videos passarão a estar disponíveis neste novo canal e poderão ser observados dentro do Adobe Media Player caso pretendam visualiza-los em modo offline.

Para isso basta:

  1. Abrir o Adobe Media Player
  2. Seleccionar ‘MY Favorites’
  3. Na nova janela seleccionar ‘Add RSS Feed’ e introduzir http://riapt.blip.tv/rss



O novo canal pode ser visualizado em http://riapt.blip.tv.




Jun
06

Slides da apresentação “Rich Internet Applications na plataforma Flash com Flex e Air”

Ontem decorreu no CCB um evento da Adobe onde eu e o João Fernandes fizemos a apresentação sobre RIAs na plataforma Flash com Flex e Air. Numa audiência com cerca de 250 pessoas, apenas umas 8 já tinham experimentado o Flex ou sabiam o que eram RIAs. Ah… não referi que o evento era destinado a criativos.

Deixo aqui os slides da nossa apresentação. São úteis para quem não sabe o que são RIAs, nem conhece Flex e Air.

O tempo da nossa apresentação era muito limitado (30 minutos), pelo que não houve espaço para questões. Estejam por isso à vontade de me contactar directamente para joao [dot] saleiro [at] webfuel [dot] pt , ou através da mailing list.

top