API Bitmap do Flash 8

O Macromedia Flash 8 introduziu novas caracteriscas para trabalharmos com bitmaps, é possivel aplicar em tempo de execução filtros como sombras e contornos. É possivel também otimizar suas animações usando o cache de bitmaps além da possibilidade de trabalhar com imagens pixel a pixel.

Uma das mais comentadas caracteristicas é o cache de bitmap(Bitmap Caching), aumentando muito a performace dos filmes, se por exemplo seu movie clip tem uma imagem vetorial muito complexa, com muitos pontos e suas coordenadas x e y são mudadas constantemente, pode ocasionar perda de desempenho pelo Flash Player pois a cada nova coordenada o Flash Player precisa "redesenhar" esse vetor.

No caso do bitmap, o Flash Player trata-o como um unico elemento. Não tenta deslocar pixel por pixel do bitmap a cada momento. trabalha o elemento inteiro, o que faz o trabalho com bitmap gaste menos recursos comparado com o trabalho de um vetor muito complexo.

Vejamos na prática como isso funciona:
Para determinar que um movie clip use esse recurso bastar setar seu valor para true como no exemplo:

Actionscript:
  1. seu_movie_clip.cacheAsBitmap = true;

Na instalação do Flash 8, são instalados juntamente arquivos de exemplos e tutoriais. Vamos no seguinte caminho:

C:\Arquivos de programas\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\CacheBitmap

Temos o arquivo CacheBitmap.fla, em sua action temos o seguinte codigo:

Actionscript:
  1. //****************************************************************************
  2. //Copyright (C) 2005 Macromedia, Inc. All Rights Reserved.
  3. //The following is Sample Code and is subject to all restrictions on
  4. //such code as contained in the End User License Agreement accompanying
  5. //this product.
  6. //****************************************************************************
  7.  
  8. import mx.transitions.Tween;
  9. var listener:Object = new Object();
  10. listener.onMotionFinished = function(objectTween:Tween):Void  {
  11.     objectTween.yoyo();
  12. };
  13. var circlesArr:Array = new Array();
  14. for (var i:Number = 0; i<10; i++) {
  15.     makeCircle();
  16. }
  17. function makeCircle():Void {
  18.     var depth:Number = this.getNextHighestDepth();
  19.     var circleClip:MovieClip = this.attachMovie("Circle", "circleClip"+depth, depth);
  20.     circleClip._y = Math.random()*400-circleClip._height/2;
  21.     var circleTween:Tween = new Tween(circleClip, "_x", null, 0, 450, Math.random()*5+5, true);
  22.     circleTween.addListener(listener);
  23.     circlesArr.push(circleClip);
  24. }
  25. function clickBtn():Void {
  26.     var circleClip:MovieClip;
  27.     for (var i:Number = 0; i<circlesarr .length; i++) {
  28.         circleClip = circlesArr[i];
  29.         circleClip.cacheAsBitmap = !circleClip.cacheAsBitmap;
  30.     }
  31. }
  32. cache_btn.onRelease = function(){
  33.     clickBtn();
  34. };

Esse codigo bem simples duplica um movie clip da biblioteca e este fica passando de um lado para outro. Clique no botão "Cache that bitmap" para ver a diferença.
Veja o resultado:

This movie requires Flash Player 9

Para saber mais:
http://livedocs.macromedia.com/flash/8

Esses artigos podem ser interessantes também

  • No Related Post
Flash, Flash Platform, Principal, RIA

1 comment


  1. Muito bom! Isso vai ajudar num projeto que estou fazendo! Obrigado pela dica!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>