| Pacchetto | flash.filters |
| Classe | public class ConvolutionFilter |
| Ereditarietà | ConvolutionFilter BitmapFilter Object |
| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Per creare un nuovo filtro di convoluzione, utilizzate la sintassi new ConvolutionFilter(). 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, il valore della proprietà cacheAsBitmap dell'oggetto viene impostato su true. Se cancellate tutti i filtri, viene ripristinato il valore originario 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. Ad esempio, se ingrandite un clip filmato di grandi dimensioni quando il filtro è applicato, il filtro viene disattivato se l'immagine risultante supera le dimensioni massime.
Elementi API correlati
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
matrix
| Proprietà | Definito da | ||
|---|---|---|---|
| alpha : Number
Il valore di trasparenza alfa del colore di sostituzione. | ConvolutionFilter | ||
| bias : Number
La variazione da aggiungere al risultato della trasformazione di matrice. | ConvolutionFilter | ||
| clamp : Boolean
Indica se l'immagine deve essere fissata. | ConvolutionFilter | ||
| color : uint
Il colore esadecimale da sostituire ai pixel esterni all'immagine di origine. | ConvolutionFilter | ||
![]() | constructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto. | Object | |
| divisor : Number
Il divisore utilizzato durante la trasformazione di matrice. | ConvolutionFilter | ||
| matrix : Array
Un array di valori utilizzato per la trasformazione di matrice. | ConvolutionFilter | ||
| matrixX : Number
La dimensione x della matrice (il numero di colonne della matrice). | ConvolutionFilter | ||
| matrixY : Number
La dimensione y della matrice (il numero di righe della matrice). | ConvolutionFilter | ||
| preserveAlpha : Boolean
Indica se il canale alfa viene conservato senza l'effetto filtro o se il filtro di convoluzione viene applicato sia al canale alfa, sia ai canali di colore. | ConvolutionFilter | ||
| Metodo | Definito da | ||
|---|---|---|---|
ConvolutionFilter(matrixX:Number = 0, matrixY:Number = 0, matrix:Array = null, divisor:Number = 1.0, bias:Number = 0.0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0.0)
Inizializza un'istanza ConvolutionFilter con i parametri specificati. | ConvolutionFilter | ||
[override]
Restituisce una copia di questo oggetto filtro. | ConvolutionFilter | ||
![]() |
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 | |
alpha | proprietà |
alpha:Number| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Il valore di trasparenza alfa del colore di sostituzione. I valori validi sono compresi tra 0 e 1.0. Il valore predefinito è 0. Ad esempio, 0.25 imposta un valore di trasparenza del 25%.
Implementazione
public function get alpha():Number public function set alpha(value:Number):voidbias | proprietà |
bias:Number| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
La variazione da aggiungere al risultato della trasformazione di matrice. La variazione aumenta il valore del colore di ogni canale, rendendo più vividi i colori scuri. Il valore predefinito è 0.
Implementazione
public function get bias():Number public function set bias(value:Number):voidclamp | proprietà |
clamp:Boolean| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Indica se l'immagine deve essere fissata. Per i pixel esterni all'immagine di origine, il valore true indica che l'immagine di input viene estesa lungo ciascuno dei suoi bordi per quanto necessario duplicando i valori di colore ai rispettivi bordi dell'immagine di input. Un valore false indica che deve essere utilizzato un altro colore, come specificato nelle proprietà color e alpha. Il valore predefinito è true.
Implementazione
public function get clamp():Boolean public function set clamp(value:Boolean):voidEsempio ( Come utilizzare questo esempio )
BitmapData per creare due caselle, una delle quali è grande la metà dell'altra. Quando viene caricato il primo esempio, la casella più grande viene disegnata all'interno di mc utlizzando attachBitmap(). Quando si fa clic su mc e si chiama il metodo applyFilter(), l'istanza largeBox di BitmapData viene ridisegnata con smallBox come bitmap di origine. Poiché applyFilter() disegna smallBox sopra un oggetto Rectangle con larghezza e altezza specificate come uguali a quelle di largeBox, la bitmap di origine è più grande dell'area di disegno. La proprietà clamp di ConvolutionFilter in questo caso è impostata su false e l'area non coperta dalla bitmap di origine, smallBox, è colorata di rosso uniforme per effetto delle variabili clampColor e clampAlpha.
package {
import flash.display.Sprite;
import flash.display.BitmapData;
import flash.filters.ConvolutionFilter;
import flash.text.TextField;
import flash.geom.Rectangle;
import flash.geom.Point;
public class ConvolutionClampExample extends Sprite {
// Variables that affect clamping:
var clamp:Boolean = false;
var clampColor:Number = 0xFF0000;
var clampAlpha:Number = 1;
// For illustration, keep other ConvolutionFilter variables neutral:
var bias:Number = 0;
var preserveAlpha:Boolean = false;
// Also, construct a neutral matrix
var matrixCols:Number = 3;
var matrixRows:Number = 3;
var matrix:Array = [ 1,1,1,
1,1,1,
1,1,1 ];
var filter:ConvolutionFilter = new ConvolutionFilter(matrixCols, matrixRows, matrix, matrix.length, bias, preserveAlpha, clamp, clampColor, clampAlpha);
var largeBoxWidth:Number = 100;
var largeBoxHeight:Number = 100;
var largeBox:BitmapData = new BitmapData(largeBoxWidth, largeBoxWidth, true, 0xCC00FF00);
var smallBoxWidth:Number = largeBoxWidth / 2;
var smallBoxHeight:Number = largeBoxHeight / 2;
var smallBox:BitmapData = new BitmapData(smallBoxWidth, smallBoxWidth, true, 0xCC0000FF);
var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(largeBox, this.getNextHighestDepth());
mc.onPress = function() {
largeBox.applyFilter(smallBox,
new Rectangle(0,0, largeBoxWidth, largeBoxHeight),
new Point(0,0),
filter);
}
}
}
color | proprietà |
color:uint| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Il colore esadecimale da sostituire ai pixel esterni all'immagine di origine. Si tratta di un valore RGB privo di componente alfa. Il valore predefinito è 0.
Implementazione
public function get color():uint public function set color(value:uint):voiddivisor | proprietà |
divisor:Number| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Il divisore utilizzato durante la trasformazione di matrice. Il valore predefinito è 1. Un divisore corrispondente alla somma di tutti i valori della matrice uniforma l'intensità di colore complessiva del risultato. Un valore pari a 0 viene ignorato e viene sostituito con il valore predefinito.
Implementazione
public function get divisor():Number public function set divisor(value:Number):voidmatrix | proprietà |
matrix:Array| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Un array di valori utilizzato per la trasformazione di matrice. Il numero di elementi nell'array deve equivalere a matrixX * matrixY.
La convoluzione matrice si basa su una matrice n per m, che descrive il modo in cui un determinato valore di pixel nell'immagine di input viene combinato con i valori di pixel adiacenti per generare un valore di pixel risultante. Ogni pixel risultante viene determinato dall'applicazione della matrice al pixel di origine corrispondente e ai pixel a esso adiacenti.
Per una convoluzione matrice 3 x 3 viene utilizzata la formula seguente per ogni singolo canale di colore:
dst (x, y) = ((src (x-1, y-1) * a0 + src(x, y-1) * a1....
src(x, y+1) * a7 + src (x+1,y+1) * a8) / divisor) + bias
Quando vengono eseguite da un processore con SSE (Streaming SIMD Extensions), alcune specifiche di filtro agiscono più velocemente. Di seguito sono indicati i criteri per accelerare le operazioni di convoluzione:
- Il filtro deve essere di tipo 3x3.
- Tutti i termini del filtro devono essere numeri interi compresi tra -127 e +127.
- La somma di tutti i termini del filtro non deve avere un valore assoluto maggiore di 127.
- Se qualche termine è negativo, il divisore deve essere compreso tra 2,00001 e 256.
- Se tutti i termini sono positivi, il divisore deve essere compreso tra 1,1 e 256.
- La variazione (o bias) deve essere un numero intero.
Nota: se create un'istanza ConvolutionFilter mediante una funzione di costruzione senza parametri, l'ordine in cui assegnate i valori alle proprietà matrix influisce sul comportamento del filtro. Nell'esempio seguente, l'array matrix è assegnato mentre le proprietà matrixX e matrixY sono impostate su 0 (valore predefinito):
public var myfilter:ConvolutionFilter = new ConvolutionFilter();
myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
myfilter.matrixX = 3;
myfilter.matrixY = 3;
Nell'esempio seguente, l'array matrix è assegnato mentre le proprietà matrixX e matrixY sono impostate su 3:
public var myfilter:ConvolutionFilter = new ConvolutionFilter();
myfilter.matrixX = 3;
myfilter.matrixY = 3;
myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
Implementazione
public function get matrix():Array public function set matrix(value:Array):voidGenera
TypeError — Quando viene impostato, l'array è null.
|
matrixX | proprietà |
matrixY | proprietà |
preserveAlpha | proprietà |
preserveAlpha:Boolean| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Indica se il canale alfa viene conservato senza l'effetto filtro o se il filtro di convoluzione viene applicato sia al canale alfa, sia ai canali di colore. Il valore false indica che la convoluzione viene applicata a tutti i canali, compreso il canale alfa. Il valore true indica che la convoluzione si applica solo ai canali di colore. Il valore predefinito è true.
Implementazione
public function get preserveAlpha():Boolean public function set preserveAlpha(value:Boolean):voidConvolutionFilter | () | Funzione di costruzione |
public function ConvolutionFilter(matrixX:Number = 0, matrixY:Number = 0, matrix:Array = null, divisor:Number = 1.0, bias:Number = 0.0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0.0)| Versione linguaggio: | ActionScript 3.0 |
| Versioni runtime: | AIR 1.0, Flash Player 9 |
Inizializza un'istanza ConvolutionFilter con i parametri specificati.
ParametrimatrixX:Number (default = 0) — La dimensione x della matrice (il numero di colonne della matrice). Il valore predefinito è 0.
| |
matrixY:Number (default = 0) — La dimensione y della matrice (il numero di righe della matrice). Il valore predefinito è 0.
| |
matrix:Array (default = null) — L'array di valori utilizzato per la trasformazione di matrice. Il numero di elementi nell'array deve equivalere a matrixX * matrixY.
| |
divisor:Number (default = 1.0) — Il divisore utilizzato durante la trasformazione di matrice. Il valore predefinito è 1. Un divisore corrispondente alla somma di tutti i valori della matrice uniforma l'intensità di colore complessiva del risultato. Un valore pari a 0 viene ignorato e viene sostituito con il valore predefinito.
| |
bias:Number (default = 0.0) — La variazione da aggiungere al risultato della trasformazione di matrice. Il valore predefinito è 0.
| |
preserveAlpha:Boolean (default = true) — Il valore false indica che il valore alfa non viene conservato e che la convoluzione viene applicata a tutti i canali, compreso il canale alfa. Il valore true indica che la convoluzione si applica solo ai canali di colore. Il valore predefinito è true.
| |
clamp:Boolean (default = true) — Per i pixel esterni all'immagine di origine, il valore true indica che l'immagine di input viene estesa se necessario lungo ciascuno dei suoi bordi, duplicando i valori di colore corrispondenti a un bordo specifico dell'immagine di input. Un valore false indica che deve essere utilizzato un altro colore, come specificato nelle proprietà color e alpha. Il valore predefinito è true.
| |
color:uint (default = 0) — Il colore esadecimale da sostituire ai pixel esterni all'immagine di origine.
| |
alpha:Number (default = 0.0) — Il canale alfa del colore di sostituzione.
|
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 — BitmapFilter Una nuova istanza ConvolutionFilter con tutte le proprietà dell'istanza originale di ConvolutionMatrixFilter.
|
buildChild() quattro volte per caricare e visualizzare quattro istanze dell'immagine. Oghi chiamata a buildChild() utilizza come argomento una funzione che non applica alcun filtro alla prima istanza e un filtro di convoluzione diverso a ogni istanza successiva.
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 applyBrightness(), applySharpness() e applyOutline() utilizzano valori diversi per l'array matrix per ottenere effetti diversi dall'applicazione del filtro ConvolutionFilter.
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.*;
import flash.filters.BitmapFilter;
import flash.filters.ConvolutionFilter;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class ConvolutionFilterExample extends Sprite {
private var size:uint = 140;
private var url:String = "Image.jpg";
public function ConvolutionFilterExample() {
buildChild(applyNothing);
buildChild(applyBrightness);
buildChild(applySharpness);
buildChild(applyOutline);
}
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 applyNothing(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
applyLabel(child, "no filter");
}
private function applyBrightness(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
var matrix:Array = [5, 5, 5,
5, 0, 5,
5, 5, 5];
applyFilter(child, matrix);
applyLabel(child, "brightness");
}
private function applySharpness(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
var matrix:Array = [0, -1, 0,
-1, 20, -1,
0, -1, 0];
applyFilter(child, matrix);
applyLabel(child, "sharpness");
}
private function applyOutline(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
var matrix:Array = [-30, 30, 0,
-30, 30, 0,
-30, 30, 0];
applyFilter(child, matrix);
applyLabel(child, "outline");
}
private function applyFilter(child:DisplayObject, matrix:Array):void {
var matrixX:Number = 3;
var matrixY:Number = 3;
var divisor:Number = 9;
var filter:BitmapFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor);
var filters:Array = new Array();
filters.push(filter);
child.filters = filters;
}
private function applyLabel(child:DisplayObject, label:String):void {
var tf:TextField = new TextField();
tf.x = child.x;
tf.y = child.height;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.text = label;
addChild(tf);
}
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