Animando o nível de brilho usando a classe Tween - as2

Imprimir
PDF

 

Manipulando nível de brilho com a classe Tween

A classe ColorMatrixFilter permite aplicar uma matriz de transformação 4 x 5 aos valores alfa e de cor RGBA (vermelho, verde, azul e alfa) de cada pixel na imagem de entrada a fim de produzir um resultado com um novo conjunto de valores alfa e de cor RGBA. Esse filtro permite alterar matiz (cor ou tonalidade distinta), rotação, alterações de saturação (intensidade de uma matiz específica), luminância (brilho ou intensidade de uma cor) para alfa, além de vários outros efeitos. Também é possível animar esses filtros para criar efeitos em seus aplicativos.

A seguir um exemplo com animação do brilho através da combinação das classes Tween e ColorMatrixFilter.
Depois que a imagem estiver carregada e posicionada no Palco que tem 420x400 pixels, seu brilho animará entre -70 e 70. Após a conclusão da interpolação de brilho, a animação será invertida com o método Tween.yoyo(), resultando em uma animação constante da interpolação.

AprendoFacil :: Treinamento Online.

Comentários ao código. 

Na primeira seção do código usamos a classe MovieClipLoader para carregar uma imagem formato JPEG no Palco. Uma vez a imagem estivando completamente carregada, reposicionamos ela no centro do Palco. Após isso, utilizamos a classe Tween para animar o nível de brilho da imagem. Para animar o brilho, usamos o método Object.watch(), que registra um manipulador de eventos iniciado quando uma propriedade especificada de um objeto do ActionScript é alterado.


Sempre que algum ActionScript tentar definir a propriedade de brilho personalizada da instância target_mc, você chamará a função brightnessWatcher (função personalizada) que  cria um novo array, que utiliza um filtro de matriz de cores a fim de definir o brilho da imagem de destino para uma quantidade especificada. Por fim, uma estrutura de decisão simples do tipo if..else informa se "Amanheceu" ou "Anoiteceu".
 

Código fonte da animação. 

import flash.filters.ColorMatrixFilter;
import mx.transitions.Tween;
import mx.transitions.easing.*;
System.security.allowDomain("http://www.aprendofacil.com.br");
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip):Void {
// centralizar a instância de clipe de filme no Stage
target_mc._x = 10;
target_mc._y = 10;
target_mc.watch("brightness", brightnessWatcher, target_mc);
// animar o clipe de filme target_mc entre o brilho -100 e +100
var t:Object = new Tween(target_mc, "brightness", Elastic.easeOut, 70, -70, 3, true);
t.onMotionFinished = function() {
this.yoyo();
};
};
this.createEmptyMovieClip("img_mc", 10);
var img_mcl:MovieClipLoader = new MovieClipLoader();
img_mcl.addListener(mclListener);
img_mcl.loadClip("http://www.aprendofacil.com.br/images/AS20/casebres.jpg", img_mc);
function brightnessWatcher(prop:String, oldVal:Number, newVal:Number, target_mc:MovieClip):Number {
var brightness_array:Array = [1, 0, 0, 0, newVal, 0, 1, 0, 0, newVal, 0, 0, 1, 0, newVal, 0, 0, 0, 1, 0];
target_mc.filters = [new ColorMatrixFilter(brightness_array)];

if (newVal > 0) {
 newVal_txt.text = "Amanheceu..";
} else {
    newVal_txt.text = "Anoiteceu..";
}
return newVal;

};