flashacs3

/ Tutoriais

Actionscript 3 – Dicas de performance

Actionscript 3

É fato que o desempenho oferecido pelo Actionscript 3, apesar de ser bastante superior ao actionscript 2, ainda deixa muito a desejar. O Actionscript é uma linguagem interpretada (script), e por isso seu desempenho dificilmente atingirá o de verdadeiras linguagens de programação, utilizadas para aplicações mais avançadas, tal como o C/C++. Os problemas de desempenho do Actionscript se evidenciam quando trabalhamos em projetos onde interatividade e animação se fazem presente de forma intensiva.

Assim, é importante conhecer algumas diretrizes para se obter melhor desempenho em projetos em Flash / Actionscript 3. A seguir, enumeramos numa ordem de importância, as diretrizes para se otimizar o desempenho de sua aplicação em flash.

1. Sempre que possível, use bitmaps ao invés de vetores

O flash se diferenciou na Web por ser um programa vetorial. O conteúdo em vetor era extremamente adequado para a Web de alguns anos atrás, por ser leve para ser transferido pela rede. Hoje, o tamanho final do projeto (tamanho em disco) ainda é um fator importante, porém não crucial. É importante encontrar um equilíbrio entre símbolos em formato de vetor e símbolos em formato de imagem.

Vetores são pequenos pois representam imagens através de funções matémáticas. Entretanto, cada vez que um vetor é desenhado na tela, a função que o representa precisa ser executada, para que ele seja convertido em uma representação visual, e posteriormente desenhado. Uma imagem, por sua vez, precisa apenas ser desenhada. Da pra imaginar a diferença de desempenho não é?

Assim a dica é: se você precisa otimizar o desemenho do seu projeto, só utilize vetores onde for indispensável.

2. Evite máscaras.

Máscaras forçam o flash player a calcular o que deve e o que não deve ser renderizado a cada desenho de quadro. Caso a máscara possua um formato complexo a situação se agrava ainda mais. Dessa forma, sempre que possível, utilize um shape simples, ou mesmo uma imagem, sobre o conteúdo que deseja mascarar, ao invés de utilizar uma máscara.

3. Vídeos e imagens (PNGs) com canal de alpha

Assim como para máscaras, os canais de alpha tornam complexo a renderização de um filme ou imagem. Dessa forma, evite utilizá-los sempre que possível.

4. Use cacheAsBitmap (da forma correta)

“cacheAsBitmap” é uma propriedade dos MovieClips que permite-nos informar ao flash que aquele MovieClip deverá ser armazenado em memória como um Bitmap e não como um vetor. Dessa forma, ao renderizar o MovieClip o flash não precisará fazer calcular a função que representa o vetor, pois ele ja terá em memória o vetor em um formato de bitmap.

“cacheAsBitmap” parece então ser a solução para todos os problemas de desempenho do flash, certo? Não é bem assim.Você só deve utilizar “cacheAsBitmap” em MovieClips que não possuem animação e que não serão alterados ao longo da execução do filme (rotação, escalonamento, aplicação de filtros, etc). Caso o filme seja alterado, o flash precisará recalcular a função que representa o vetor, o que tornará o processo ainda mais lento que se ele não estivesse marcado como “cacheAsBitmap”.

5. ENTER_FRAME e setInterval

Crie o mínimio de event listeners para o evento ENTER_FRAME. Em algumas aplicações, como os jogos, o ideal é que você crie apenas um event listener para esse evento, e ele centralizará todos os controles. Lembre-se também de remover os event listeners quando a captura do evento não for mais necessária (utilize “removeEventListener()”).

O mesmo se aplica ao setInterval. Crie o mínimo de intervals possível.Utilize clearInterval para remover o interval criado da memória e parar sua execução.

6. Recorte símbolos grandes

Caso você possua símbolos que, por serem grandes, não estarão completamente visíveis na tela, recorte as partes não visíveis.

7. Complexidade algorítmica

Faça uma análise da complexidade algorítimica dos seus códigos actionscript. Otimize seus códigos!

Essas são as principais dicas para se obter melhores desempenhos nas aplicações. Qualquer dúvida é só perguntar! Até o próximo artigo!



Arivan Bastos

Analista de sistemas, desenvolvedor Web e de games. Possui domínio de PHP, SQL e ActionScript 3. Possui conhecimentos avançados em Starling Framework, Corona SDK e Yii Framework. Atua na Virtualize na criação de sites, desenvolvimento de jogos, desenvolvimento de aplicativos mobile e desenvolvimento de aplicativos para redes sociais.