Pacote | flash.filters |
Classe | public final class ColorMatrixFilter |
Herança | ColorMatrixFilter BitmapFilter Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Nota: para valores RGBA, o byte mais significativo representa o valor de canal vermelho, seguido pelo verde, azul e depois o alfa.
Para criar um novo filtro de matriz de cor, use a sintaxe new ConvolutionFilter()
. O uso dos filtros depende do objeto ao qual você vai aplicar o filtro:
- Para aplicar filtros em clipes de filme, campos de texto, botões e vídeo, use a propriedade
filters
(herdada do DisplayObject). Definir a propriedadefilters
de um objeto não modifica o objeto e você pode remover o filtro limpando a propriedadefilters
. - Para aplicar os filtros aos objetos BitmapData, use o método
BitmapData.applyFilter()
. A ação de chamar oapplyFilter()
em um objeto BitmapData usa o objeto BitmapData de origem e o objeto do filtro e cria uma imagem filtrada como resultado.
Se você aplicar um filtro a um objeto de exibição, a propriedade cacheAsBitmap
do objeto de exibição é definida como true
. Se você remover todos os filtros, o valor original de cacheAsBitmap
é restaurado.
Um filtro não é aplicado caso a imagem resultante exceda as dimensões máximas. No AIR 1.5 e no Flash Player 10, o máximo é de 8,191 pixels de largura ou de altura, e o número total de pixels não pode exceder 16,777,215 pixels. (Dessa forma, caso uma imagem tenha 8,191 pixels de largura, ela só pode ter 2.048 pixels de altura.) No Flash Player 9 e anteriores e no AIR 1.1 e anteriores, a limitação é de 2.880 pixels de altura e de 2.880 pixels de largura. Por exemplo, se você aumentar o zoom em um clipe de filme grande com um filtro aplicado, o filtro será desativado se a imagem resultante atingir as dimensões máximas.
Elementos da API relacionados
flash.display.BitmapData.applyFilter()
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
Propriedade | Definido por | ||
---|---|---|---|
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | ||
matrix : Array
Matriz de 20 itens para uma transformação de cores 4 x 5. | ColorMatrixFilter |
Método | Definido por | ||
---|---|---|---|
ColorMatrixFilter(matrix:Array = null)
Inicializa uma nova ocorrência ColorMatrixFilter com os parâmetros especificados. | ColorMatrixFilter | ||
[substituir]
Retorna uma cópia deste objeto de filtro. | ColorMatrixFilter | ||
Indica se um objeto tem uma propriedade especificada definida. | Object | ||
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | ||
Retorna a representação de string do objeto especificado. | Object | ||
Retorna o valor primitivo do objeto especificado. | Object |
matrix | propriedade |
matrix:Array
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Matriz de 20 itens para uma transformação de cores 4 x 5. A propriedade matrix
não pode ser alterada ao modificar diretamente seu valor (por exemplo, myFilter.matrix[2] = 1;
). Em vez disso, é necessário obter uma referência para a matriz, fazer a alteração na referência e redefinir o valor.
O filtro da matriz de cor separa cada pixel de origem em seus componentes vermelho, verde, azul e alfa como srcR, srcG, srcB, srcA. Para calcular o resultado de cada um dos quatro canais, o valor de cada pixel na imagem é multiplicado pelos valores na matriz de transformação. Um deslocamento, entre -255 e 255, pode opcionalmente ser adicionado a cada resultado (o quinto item em cada linha da matriz). O filtro combina cada componente de cor em um único pixel e grava o resultado. Na fórmula a seguir, a[0] até a[19] correspondem às entradas 0 a 19 na matriz de 20 itens que é transmitida para a propriedade matrix
:
redResult = (a[0] * srcR) + (a[1] * srcG) + (a[2] * srcB) + (a[3] * srcA) + a[4] greenResult = (a[5] * srcR) + (a[6] * srcG) + (a[7] * srcB) + (a[8] * srcA) + a[9] blueResult = (a[10] * srcR) + (a[11] * srcG) + (a[12] * srcB) + (a[13] * srcA) + a[14] alphaResult = (a[15] * srcR) + (a[16] * srcG) + (a[17] * srcB) + (a[18] * srcA) + a[19]
Para cada valor na matriz, um valor 1 é igual a 100% de cada canal que está sendo despachado para a saída, preservando o valor do canal de cores.
Os cálculos são realizados em valores de cor não calculados. Se o gráfico de entrada consistir em valores de cor recalculados, esses valores serão automaticamente convertidos em valores de cor não calculados para essa operação.
Dois modos otimizados estão disponíveis:
Somente Alfa. Quando você transmite ao filtro uma matriz que se ajusta somente ao componente alfa, conforme mostrado aqui, o filtro otimiza seu desempenho:
1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 N 0 (where N is between 0.0 and 1.0)
Versão mais rápida. Disponível somente com os processadores compatíveis com o acelerador SSE/AltiVec, como Intel ® Pentium ® 3 e posterior e Apple ® G4 e posterior. O acelerador é usado quando os termos do multiplicador estão na faixa de -15,99 a 15,99 e os termos do somador a[4], a[9], a[14] e a[19] estão na faixa de -8000 a 8000.
Implementação
public function get matrix():Array
public function set matrix(value:Array):void
Lança
TypeError — A Matriz fica nula quando está sendo definida
|
ColorMatrixFilter | () | Construtor |
public function ColorMatrixFilter(matrix:Array = null)
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Inicializa uma nova ocorrência ColorMatrixFilter com os parâmetros especificados.
Parâmetrosmatrix:Array (default = null ) — Matriz de 20 itens disposta como uma matriz 4 x 5.
|
clone | () | método |
override public function clone():BitmapFilter
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Retorna uma cópia deste objeto de filtro.
RetornaBitmapFilter — Uma nova ocorrência ColorMatrixFilter com todas as mesmas propriedades que a original.
|
buildChild()
quatro vezes para carregar e exibir quatro ocorrências da imagem. A primeira chamada para buildChild()
considera null
como um argumento, não aplicando nenhum filtro à primeira ocorrência. Cada chamada subsequente para buildChild()
considera como um argumento uma função que aplica um filtro de matriz de cor diferente a cada ocorrência subsequente da imagem.
A função buildChild()
cria um novo objeto Loader chamado loader
. Para cada chamada para buildChild()
, anexe um tratamento de eventos ao objeto Loader para tratar dos eventos complete
, que são manipulados pela função passada para buildChild()
.
As funções applyRed()
, applyGreen()
e applyBlue()
usam diferentes valores para a matriz matrix
para obter efeitos diferentes.
Nota: para obter melhores resultados, use uma imagem de aproximadamente 80 pixels de largura. O nome e o local do arquivo de imagem deve corresponder ao valor passado para a propriedade url
. Por exemplo, o valor passado para url
no exemplo aponta para um arquivo de imagem chamado "Image.jpg" que está no mesmo diretório que seu arquivo SWF.
package { import flash.display.DisplayObject; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.filters.ColorMatrixFilter; import flash.net.URLRequest; public class ColorMatrixFilterExample extends Sprite { private var size:uint = 140; private var url:String = "Image.jpg"; public function ColorMatrixFilterExample() { buildChild(null); buildChild(applyRed); buildChild(applyGreen); buildChild(applyBlue); } private function buildChild(loadHandler:Function):void { var loader:Loader = new Loader(); loader.x = numChildren * size; loader.y = size; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); if (loadHandler != null) { loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler); } var request:URLRequest = new URLRequest(url); loader.load(request); addChild(loader); } private function applyRed(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = new Array(); matrix = matrix.concat([1, 0, 0, 0, 0]); // red matrix = matrix.concat([0, 0, 0, 0, 0]); // green matrix = matrix.concat([0, 0, 0, 0, 0]); // blue matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha applyFilter(child, matrix); } private function applyGreen(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = new Array(); matrix = matrix.concat([0, 0, 0, 0, 0]); // red matrix = matrix.concat([0, 1, 0, 0, 0]); // green matrix = matrix.concat([0, 0, 0, 0, 0]); // blue matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha applyFilter(child, matrix); } private function applyBlue(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = new Array(); matrix = matrix.concat([0, 0, 0, 0, 0]); // red matrix = matrix.concat([0, 0, 0, 0, 0]); // green matrix = matrix.concat([0, 0, 1, 0, 0]); // blue matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha applyFilter(child, matrix); } private function applyFilter(child:DisplayObject, matrix:Array):void { var filter:ColorMatrixFilter = new ColorMatrixFilter(matrix); var filters:Array = new Array(); filters.push(filter); child.filters = filters; } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
Wed Jun 13 2018, 11:10 AM Z