Distorcendo uma imagem com a classe DisplacementMapFilter

Imprimir
PDF

 

Usando o filtro de mapa de deslocamento.

A classe DisplacementMapFilter usa os valores de pixel do objeto BitmapData especificado (chamado imagem de mapa de deslocamento) para deslocar uma instância no Stage, por exemplo, uma instância de clipe de filme ou uma instância de dados de bitmap. Você pode usar esse filtro para obter um efeito distorcido em uma instância especificada.

O procedimento a seguir carrega uma imagem JPEG e aplica a ele um filtro de mapa de deslocamento, que faz com que a imagem tenha uma aparência distorcida. Sempre que o usuário move o mouse, o mapa de deslocamento é regerado.

 

AprendoFacil :: Filtro de mapa de deslocamento em actionscript.

 

Este código carrega uma imagem JPEG inserindo-a no Palco. Depois que a imagem estiver completamente carregada, o código cria uma instância BitmapData e usa o método perlinNoise() para preenchê-la com pixels colocados aleatoriamente. A instância BitmapData passa para o filtro de mapa de deslocamento, que é aplicado à imagem fazendo com que ela tenha uma aparência distorcida sempre que o usuário move o mouse sobre a imagem.

 

Código fonte

import flash.filters.DisplacementMapFilter;
import flash.display.BitmapData;
import flash.geom.Point;
// Criar um clipe e um clipe aninhado.
var shapeClip:MovieClip = this.createEmptyMovieClip("shapeClip", 1);
shapeClip.createEmptyMovieClip("holderClip", 1);
// Carregar JPEG.
var imageLoader:MovieClipLoader = new MovieClipLoader();
imageLoader.loadClip("http://www.aprendofacil.com.br/images/AS20/bandeira0.jpg", shapeClip.holderClip);
// Criar uma instância BitmapData.
var perlinBmp:BitmapData = new BitmapData(Stage.width, Stage.height);
perlinBmp.perlinNoise(Stage.width, Stage.height, 10, Math.round(Math.random() * 100000), false, true, 1, false);
// Criar e aplicar o filtro de mapa de deslocamento.
var displacementMap:DisplacementMapFilter = new DisplacementMapFilter(perlinBmp, new Point(0, 0), 1, 1, 80, 80, "color", 1);
shapeClip.filters = [displacementMap];
// Criar e aplicar um ouvinte.
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function():Void {
perlinBmp.perlinNoise(Stage.width, Stage.height, 10,
Math.round(Math.random() * 100000), false, true, 1, false);
shapeClip.filters = [displacementMap];
}
Mouse.addListener(mouseListener);