| 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 propriedadefiltersde 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):voidLanç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
Ocultar propriedades públicas herdadas
Mostrar propriedades públicas herdadas