| Pacchetto | flash.filters |
| Classe | public final class ColorMatrixFilter |
| Ereditarietà | ColorMatrixFilter BitmapFilter Object |
| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Nota: per i valori RGBA, il byte più significativo rappresenta il valore del canale rosso seguito da quello verde, dal blu e da alfa.
Per creare un nuovo filtro matrice colore, utilizzate la sintassi new ColorMatrixFilter(). L'uso dei filtri dipende dall'oggetto a cui il filtro viene applicato:
- per applicare i filtri a clip filmato, campi di testo, pulsanti e video, utilizzate la proprietà
filters(ereditata da DisplayObject). L'impostazione della proprietàfiltersdi un oggetto non modifica l'oggetto ed è possibile eliminare il filtro cancellando la proprietàfilters. - Per applicare filtri a oggetti BitmapData, utilizzate il metodo
BitmapData.applyFilter(). Quando si chiamaapplyFilter()su un oggetto BitmapData, vengono acquisiti l'oggetto BitmapData di origine e l'oggetto filtro e viene generata un'immagine filtrata come risultato.
Se applicate un filtro a un oggetto di visualizzazione, la proprietà cacheAsBitmap dell'oggetto viene impostata su true. Se eliminate tutti i filtri, viene ripristinato il valore originale di cacheAsBitmap.
Un filtro non viene applicato se l'immagine risultante supera le dimensioni massime. In AIR 1.5 e Flash Player 10, la dimensione massima è di 8.191 pixel in larghezza o altezza, mentre il numero totale di pixel non può essere superiore a 16.777.215, pertanto se un'immagine ha una larghezza di 8.191 pixel, può avere solo una lunghezza di 2.048 pixel. In Flash Player 9 e versioni precedenti e in AIR 1.1 e versioni precedenti, la limitazione è di 2.880 pixel in altezza e 2.880 pixel in larghezza. Se, ad esempio, ingrandite un clip filmato di grandi dimensioni quando il filtro è applicato, il filtro viene disattivato se l'immagine risultante raggiunge le dimensioni massime.
Elementi API correlati
flash.display.BitmapData.applyFilter()
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
| Proprietà | Definito da | ||
|---|---|---|---|
![]() | constructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto. | Object | |
| matrix : Array
Un array di 20 elementi per la trasformazione di colore 4 x 5. | ColorMatrixFilter | ||
| Metodo | Definito da | ||
|---|---|---|---|
ColorMatrixFilter(matrix:Array = null)
Inizializza una nuova istanza ColorMatrixFilter con i parametri specificati. | ColorMatrixFilter | ||
[override]
Restituisce una copia di questo oggetto filtro. | ColorMatrixFilter | ||
![]() |
Indica se per un oggetto è definita una proprietà specifica. | Object | |
![]() |
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro. | Object | |
![]() |
Indica se la proprietà specificata esiste ed è enumerabile. | Object | |
![]() |
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche. | Object | |
![]() |
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate. | Object | |
![]() |
Restituisce la rappresentazione in formato stringa dell'oggetto specificato. | Object | |
![]() |
Restituisce il valore di base dell'oggetto specificato. | Object | |
matrix | proprietà |
matrix:Array| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Un array di 20 elementi per la trasformazione di colore 4 x 5. La proprietà matrix non può essere modificata variandone direttamente il valore (ad esempio, myFilter.matrix[2] = 1;). È necessario invece ottenere un riferimento all'array, apportare la modifica al riferimento e reimpostare il valore.
Il filtro matrice colore separa ogni singolo pixel di origine nei relativi componenti di rosso, verde, blu e alfa sotto forma di srcR, srcG, srcB, srcA. Per calcolare il risultato di ciascuno dei quattro canali si moltiplica il valore di ogni pixel dell'immagine per i valori della matrice di trasformazione. In via facoltativa è possibile aggiungere a ogni risultato (il quinto elemento in ogni riga della matrice) un offset compreso tra -255 e 255. Il filtro ricombina ogni componente di colore in un singolo pixel e scrive il risultato. Nella formula seguente, i valori da [0] a [19] corrispondono agli elementi da 0 a 19 nell'array di 20 elementi che viene passato alla proprietà 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]
Per ogni valore di colore dell'array, il valore 1 equivale all'invio del 100% di quel canale all'output, conservando il valore del canale di colore.
I calcoli vengono eseguiti su valori di colore non moltiplicati. Se l'elemento grafico di input è composto da valori di colore premoltiplicati, per questa operazione tali valori vengono automaticamente convertiti in valori di colore non moltiplicati.
Sono disponibili due modalità ottimizzate:
Solo alfa. Quando al filtro viene passata una matrice che regola solo il componente alfa, come illustrato di seguito, vengono ottimizzate le prestazioni del filtro:
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)
Versione più veloce. Disponibile solo con i processori abilitati per l'acceleratore SSE/AltiVec quali Intel® Pentium® 3 e versioni successive e Apple® G4 e versioni successive. L'acceleratore viene utilizzato quando i valori da moltiplicare sono compresi tra -15,99 e 15,99 e i valori a[4], a[9], a[14] e a[19] da sommare sono compresi tra -8000 e 8000.
Implementazione
public function get matrix():Array public function set matrix(value:Array):voidGenera
TypeError — Quando viene impostato, l'array è null.
|
ColorMatrixFilter | () | Funzione di costruzione |
public function ColorMatrixFilter(matrix:Array = null)| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Inizializza una nuova istanza ColorMatrixFilter con i parametri specificati.
Parametrimatrix:Array (default = null) — Un array di 20 elementi organizzati in una matrice 4 x 5.
|
clone | () | metodo |
override public function clone():BitmapFilter| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Restituisce una copia di questo oggetto filtro.
RestituisceBitmapFilter — Una nuova istanza ColorMatrixFilter con tutte le proprietà dell'originale.
|
buildChild() quattro volte per caricare e visualizzare quattro istanze dell'immagine. La prima chiamata a buildChild() accetta null come argomento, senza applicare alcun filtro alla prima istanza. Ogni chiamata successiva a buildChild() utilizza come argomento una funzione che applica un filtro matrice colore diverso a ogni istanza successiva dell'immagine.
La funzione buildChild() crea un nuovo oggetto Loader denominato loader. Per ogni chiamata a buildChild(), associate un listener di eventi all'oggetto Loader per l'intercettazione degli eventi complete, che vengono gestiti dalla funzione passata a buildChild().
Le funzioni applyRed(), applyGreen() e applyBlue() utilizzano valori diversi per l'array matrix per ottenere effetti diversi.
Nota: per ottenere risultati ottimali, utilizzate un'immagine di circa 80 pixel di larghezza. Il nome e la posizione del file di immagine dovranno corrispondere al valore passato alla proprietà url. Ad esempio, il valore passato a url nell'esempio fa riferimento a un file di immagine denominato "Image.jpg" presente nella stessa directory del file 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);
}
}
}
Tue Jun 12 2018, 02:44 PM Z
Nascondi proprietà pubbliche ereditate
Mostra proprietà pubbliche ereditate