Armazenamento em cache de objetos de exibiçãoFlash Player 9 e posterior, Adobe AIR 1.0 e posterior Sempre que estiver aumentando o tamanho no Flash, seja para criar um aplicativo ou animações complexas com script, você precisa levar em conta o desempenho e a otimização. O Flash Player e o AIR não otimizam conteúdo que permanece estático (como uma ocorrência de Shape retangular). Desse modo, quando você altera a posição do retângulo, o Flash Player ou o AIR redesenha a ocorrência de Shape inteira. Você pode armazenar os objetos de exibição especificados em cache para melhorar o desempenho do arquivo SWF. O objeto de exibição é uma superfície, basicamente uma versão de bitmap dos dados vetoriais da ocorrência, que são os dados que não devem mudar muito durante o fluxo do arquivo SWF. Portanto, as ocorrências com o cache ativado não são redesenhadas continuamente à medida que o arquivo SWF é reproduzido, o que aumenta a velocidade da renderização. Nota: Você pode atualizar os dados vetoriais e, quando isso é feito, a superfície é recriada. Assim, os dados vetoriais armazenados em cache na superfície não precisam permanecer iguais para todo o arquivo SWF.
Se você definir a propriedade cacheAsBitmap do objeto de exibição como true, o cache do objeto de exibição será uma representação em bitmap do próprio objeto. O Flash Player ou o AIR criam um objeto de superfície para a ocorrência, que é um bitmap armazenado em cache em vez de dados vetoriais. Se os limites do objeto de exibição forem alterados, a superfície será recriada em vez de ser redimensionada. As superfícies podem ser aninhadas com outras superfícies. A superfície filho copia seu bitmap na superfície pai. Para obter mais informações, consulte Ativação do armazenamento em cache de bitmaps. A propriedade opaqueBackground e a propriedade scrollRect da classe DisplayObject estão relacionadas ao armazenamento em cache de bitmaps realizado com a propriedade cacheAsBitmap. Embora essas três propriedades sejam independentes entre si, as propriedades opaqueBackground e scrollRect funcionam melhor quando um objeto é armazenado em cache como um bitmap; você verá a melhora de desempenho das propriedades opaqueBackground e scrollRect somente quando cacheAsBitmap for definido como true. Para obter mais informações sobre como percorrer o conteúdo do objeto de exibição, consulte Visão panorâmica e rolagem de objetos de exibição. Para obter mais informações sobre como configurar um plano de fundo opaco, consulte Definição de uma cor de fundo opaca. Para obter informações sobre o mascaramento do canal alfa, que requer a definição da propriedade cacheAsBitmap como true, consulte Mascaramento de objetos de exibição. Quando ativar o armazenamento em cacheA ativação do cache para um objeto de exibição cria uma superfície, o que tem diversas vantagens, como ajudar na renderização rápida de animações vetoriais complexas. Existem diversos cenários nos quais é necessário ativar o cache. Você talvez pense que sempre que o cache é ativado, o desempenho dos arquivos SWF melhora; no entanto, existem situações nas quais a ativação do cache não melhora o desempenho ou pode inclusive piorá-lo. Esta seção descreve cenários nos quais o cache deve ser usado e quando objetos de exibição regulares devem ser usados. O desempenho global de dados em cache depende da complexidade dos dados vetoriais das ocorrências, quanto foram mudados os dados e se foi ou não definida a propriedade opaqueBackground. Se você estiver mudando regiões pequenas, a diferença entre o uso de superfície e o uso de dados vetoriais pode ser desprezível. Teste o seu trabalho das duas formas, antes de implantar o aplicativo. Quando usar o armazenamento em cache de bitmapsA seguir, alguns casos comuns nos quais podem ser vistos benefícios significativos quando se ativa o armazenamento em cache de bitmaps.
A ativação do cache de bitmaps em todos esses cenários melhora a resposta e a interatividade do aplicativo, otimizando os gráficos vetoriais. Além disso, sempre que um filtro é aplicado em um objeto de exibição, cacheAsBitmap é definido automaticamente como true, mesmo que esteja explicitamente definido como false. Se todos os filtros forem desativados do objeto de exibição, a propriedade cacheAsBitmap retornará ao valor definido pela última vez. Quando evitar o uso do armazenamento em cache de bitmapsUsando este recurso nas circunstâncias erradas pode prejudicar o desempenho do arquivo SWF. Ao usar o cache de bitmaps, lembre-se das seguintes orientações:
Ativação do armazenamento em cache de bitmapsPara ativar o armazenamento em cache de bitmaps para um objeto de exibição, defina a propriedade cacheAsBitmap como true: mySprite.cacheAsBitmap = true; Depois de definir a propriedade cacheAsBitmap como true, você deve perceber que o objeto de exibição realiza o encaixe de pixels automaticamente em coordenadas inteiras. Ao testar o arquivo SWF, você verá que qualquer animação executada em uma imagem vetorial complexa é processada muito mais rápido. Uma superfície (bitmap em cache) não será criada, mesmo que cacheAsBitmap esteja definido como true, se ocorrer uma ou mais das seguintes situações:
Matrizes de transformação de bitmap armazenado em cacheEm aplicativos AIR para dispositivos móveis, você deve definir a propriedade cacheAsBitmapMatrix sempre que definir a propriedade cacheAsBitmap. A definição desta propriedade permite aplicar um intervalo mais amplo de transformações ao objeto de exibição sem acionamento de uma nvoa renderização. mySprite.cacheAsBitmap = true; mySprite.cacheAsBitmapMatrix = new Matrix(); Quando você define esta matriz adequadamente, pode aplicar a seguinte transformação adicional ao objeto de exibição sem voltar a armazenar o objeto em cache:
Essas transformações são aplicadas diretamente ao bitmap no cache. |
![]() |