Olá, seja bem-vindo ao procedimento que irá te auxiliar a respeito das boas práticas no momento de desenvolver Gadgets.


Na construção de Gadgets é necessário ter em conta alguns parâmetros para evitar perdas de performance ou mesmo até que o player fique bloqueado/travado



Requisitos Técnicos



  • Conhecimentos de AS3 (ActionScript 3) para Gadgets em Flash;


  • Conhecimentos de Javascript para Gadgets em Javascript (base em HTML5);


  • Estudar biblioteca CreateJS e principalmente EaselJS (que é parte fundamental dela);


  • Conhecimentos básicos de Programação Orientada a Objetos;


  • Conhecimentos de Adobe Animate (antigo Adobe Flash Professional).




Ampliando conhecimentos



Caso precise ampliar seus conhecimentos base no desenvolvimento de Gadgets em Flash, clique aqui para baixar o PDF oficial de instruções dos próprios desenvolvedores (Amplitude.net). Algumas questões mais atualizadas e avançadas estão presentes na programação dos Gadgets do Projeto Editorial de Cortesia (Default), em nosso servidor em:

Z:\01 - B2 Mídia\Criação\16 - Gadgets Programados\04 - Editorial Padrão CORTESIA\# Finalizados



Caso precise ampliar seus conhecimentos no desenvolvimento de Gadgets em Javascript (base HTML5), clique aqui para acessar o procedimento. Algumas questões mais atualizadas e avançadas estão presentes na programação dos Gadgets do Projeto Editorial de Cortesia (Default) mais atualizados, em nosso GitLab em:

https://gitlab.com/b2midia-tvs/templates-html5





Boas práticas



Programação dentro do Adobe Animate


  • Sempre que possível, utilize Tempo Dinâmico.

Porém, junto utilize também o tempo determinado pelo Template, que é ditado pelos atributos do GDATA retornado pelo Template. Assim conseguimos controlar melhor o encerramento do Template e definimos o tempo de reprodução do Template para o Tempo determinado pelo cliente para ele. Podemos também utilizar o Tempo determinado pelo cliente para o tempo de uma "tela" entre diversas de, por exemplo, paginação de vários aniversariantes por "tela".


  • Para programar dentro da Timeline, use uma camada (Layer) separada para os Scripts nos Keyframes, no topo (Layer no topo).


  • (Javascript) Todas as variáveis que precisarem ser utilizadas a qualquer momento ou em qualquer Keyframe do Template, precisam ser declaradas no script de escopo Global.


  • Ao final de toda Timeline de um MovieClip que tenha mais que 1 frame, SEMPRE use um Keyframe com o script com o comando this.stop() para evitar que o Template rode esta Timeline em looping eterno e consuma memória desnecessariamente. Considerando a instrução anterior, caso precise de uma animação que fique em looping eterno, é necessário que você programe a remoção deste MovieClip ao final da execução do Template.


  • Todo Objeto que for alterado de alguma forma (como a cor do texto, por exemplo) pela programação, ele precisa se encontrar organizado da seguinte forma:


>-Cena
>----MovieClip Avô (Pode ser animado)
>--------MovieClip Pai (É opcional, pode ser animado)
>------------MovieClip Filho, nosso alvo no código (Não pode ser animado, obrigatório ter apenas 1 frame)
>----------------Objeto a tratar (Shape, Texto, outros)


  • É recomendado que, antes de encerrar o Tempo Dinâmico na Cena, seja requisitado o método "gotoAndStop()" (sem aspas) e que nesse último Keyframe da Timeline da Cena não tenha nada além do Script em si.

Neste último Script do último Keyframe deverão ter apenas as instruções para a finalização do Template por completo.


  • Quando finalizar a execução Template, no código, sempre remova todas as Collections e todos os eventListeners.


  • (Javascript) Ao final da execução do Template (geralmente ao finalizar o Tempo Dinâmico), utilize a função "removeAllChildren()" (sem aspas) para a Cena (dependendo do caso pode ser o "this", sem aspas). Isto irá garantir que todos os objetos em cena sejam removidos e não deixem possíveis "leftovers" na memória.




MovieClips, Shapes e Animações:


  • Procurar não utilizar imagens/bitmaps dentro do Template.


  • Evite ao máximo usar objetos/elementos que fiquem fora do Canvas (área do Template) ou que sejam animados de forma que saiam muito dos limites do Canvas.

Isso acarretará na utilização de muita memória RAM e processamento gráfico do Player, pois para o Processador (CPU e/ou GPU) o Template estaria com uma área gráfica maior, ou seja, como se ele estivesse com uma resolução maior que os limites estabelecidos (mesmo com o uso de Mask para o Canvas todo, isto ocorre "atrás das cortinas").


  • Evite animar objetos (Shapes/figuras, textos, MovieClips) muito grandes ou complexos.

Eles podem utilizar muita memória RAM e processamento gráfico do Player.


  • Para fazer efeitos de sombra, use uma Shape com gradiente com transparência. Procure sempre substituir o uso de um Bitmap por imagens vetorizadas (tal como aquelas de Illustrator) sem muitos pontos ou curves. Quanto mais detalhado forem os vetores utilizados, mais memória RAM e processamento gráfico o Template irá requisitar do Player.


  • Se um MovieClip precisará ser requisitado no primeiro Keyframe da Cena, mas ele entrará somente depois com uma animação própria e no momento não deve estar visível, marque a propriedade de VISIBLE dele como DESLIGADA. Apenas quando for necessário de fato animar este MovieClip, utilize a propriedade VISIBLE como LIGADA no próprio painel de propriedades de objeto do Adobe Animate. Isto economizará memória de RAM e processamento gráfico.


  • Evitar uso de transparência em itens que serão animados, tais como gradientes ou Shapes (figuras) com transparência (opacidade inferior a 100%). Use somente caso realmente for necessário.


  • Evitar uso de transparências nas animações. Sempre que possível deve-se usar objetos opacos de modo a evitar processamento de transparências.


  • Para animações que precisem de suavidade, procure utilizar o recurso de Ease-In e Ease-out já presentes no Adobe Animate para os Tweens de animação.


  • Procurar não usar mais do que 3 animações simultâneas e evitar animações muito complexas.


  • Não é recomendado usar efeitos de rotação ou distorção de imagem, pois consome bastante processamento gráfico dos Players e certamente causará lentidão na exibição do mesmo. No máximo, utilizar ou só movimento da imagem de um ponto para outro, ou só um zoom contínuo.