Paket | flash.filters |
Klass | public class ConvolutionFilter |
Arv | ConvolutionFilter BitmapFilter Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Om du vill skapa ett faltningsfilter använder du syntaxen new ConvolutionFilter()
. Användningen av filter beror på för vilket objekt du tillämpar filtret:
- Om du vill använda filter på filmklipp, textfält, knappar och video använder du
filters
-egenskapen (ärvs från DisplayObject). Inställningar avfilters
-egenskaper i ett objekt ändrar inte objektet. Du kan ta bort filtret genom att rensa egenskapenfilters
. - Om du vill använda filter på BitmapData-objekt använder du metoden
BitmapData.applyFilter()
. OmapplyFilter()
anropas för ett BitmapData-objekt används BitmapData-källobjektet och filterobjektet för att generera en filtrerad bild som resultat.
Om du använder ett filter för att visa ett objekt, anges värdet för cacheAsBitmap
-egenskapen till true
. Om du rensar alla filter återställs ursprungsvärdet cacheAsBitmap
.
Inget filter används om resultatbilden överskrider maxdimensionerna. I AIR 1.5 och Flash Player 10 är maxstorleken 8 191 pixlar i bredd eller höjd, och det totala antalet pixlar får inte överskrida 16 777 215 pixlar. (Om en bild är 8 191 pixlar bred kan den därför bara vara 2 048 pixlar hög.) I Flash Player 9 och tidigare och i AIR 1.1 och tidigare är begränsningen 2 880 pixlar i höjd och 2 880 pixlar i bredd. Om du till exempel zoomar in på ett stort filmklipp med ett filter, inaktiveras filtret om den resulterande bilden överskrider maxdimensionerna.
Relaterade API-element
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
matrix
Egenskap | Definieras med | ||
---|---|---|---|
alpha : Number
Alfagenomskinlighetsvärdet för ersättningsfärgen. | ConvolutionFilter | ||
bias : Number
Mängden marginal att lägga till i resultatet av en matrisomformning. | ConvolutionFilter | ||
clamp : Boolean
Indikerar om bilden ska klämmas ihop. | ConvolutionFilter | ||
color : uint
Den hexadecimala färg som ska ersätta pixlar utanför källbilden. | ConvolutionFilter | ||
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object | ||
divisor : Number
Nämnaren som används under matrisomformning. | ConvolutionFilter | ||
matrix : Array
En array med värden som används för matrisomformning. | ConvolutionFilter | ||
matrixX : Number
Matrisens x-led (antalet kolumner i matrisen). | ConvolutionFilter | ||
matrixY : Number
Matrisens y-led (antalet rader i matrisen). | ConvolutionFilter | ||
preserveAlpha : Boolean
Indikerar om alfakanalen bevaras utan filtereffekten eller om faltningsfiltret används på både alfakanalen och färgkanalerna. | ConvolutionFilter |
Metod | Definieras med | ||
---|---|---|---|
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)
Initierar en ny ConvolutionFilter-instans med de angivna parametrarna. | ConvolutionFilter | ||
[åsidosätt]
Returnerar en kopia av det här filterobjektet. | ConvolutionFilter | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Returnerar det angivna objektets primitiva värde. | Object |
alpha | egenskap |
alpha:Number
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Alfagenomskinlighetsvärdet för ersättningsfärgen. Giltiga värden är från 0 till 1,0. Standardvärdet är 0. 0,25 innebär till exempel att genomskinlighetsvärdet är 25 %.
Implementering
public function get alpha():Number
public function set alpha(value:Number):void
bias | egenskap |
bias:Number
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Mängden marginal att lägga till i resultatet av en matrisomformning. Marginalen ökar färgvärdet för varje kanal, så att mörka färger ser ljusare ut. Standardvärdet är 0.
Implementering
public function get bias():Number
public function set bias(value:Number):void
clamp | egenskap |
clamp:Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Indikerar om bilden ska klämmas ihop. För pixlar som ligger utanför källbilden innebär värdet true
att indatabilden utökas längs sina kantlinjer efter behov, genom att färgvärdena vid indatabildens givna kant dupliceras. Värdet false
innebär att en annan färg ska användas enligt specifikationen i egenskaperna color
och alpha
. Standardvärdet är true
.
Implementering
public function get clamp():Boolean
public function set clamp(value:Boolean):void
Exempel ( Så här använder du exemplet )
BitmapData
. Den ena rutan är hälften så stor som den andra. Om exemplet först läses in ritas den större rutan inuti mc
med attachBitmap()
. Om du klickar på mc
och metoden applyFilter()
anropas ritas largeBox
-instansen av BitmapData
om med smallBox
som källbitmapp. Eftersom applyFilter()
ritar smallBox
över en Rectangle
vars bredd och höjd definieras som värdena för largeBox
, är källbitmappen mindre än ritområdet. Egenskapen clamp
för ConvolutionFilter
är i det här fallet inställd på false
och området som inte täcks av källbitmappen, smallBox
, har heltäckande röd färg enligt variablerna clampColor
och 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 | egenskap |
color:uint
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Den hexadecimala färg som ska ersätta pixlar utanför källbilden. Det är ett RGB-värde utan alfakomponent. Standardvärdet är 0.
Implementering
public function get color():uint
public function set color(value:uint):void
divisor | egenskap |
divisor:Number
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Nämnaren som används under matrisomformning. Standardvärdet är 1. En nämnare som är summan av alla matrisvärden jämnar ut resultatets övergripande färgintensitet. Värdet 0 ignoreras och standardvärdet används i stället.
Implementering
public function get divisor():Number
public function set divisor(value:Number):void
matrix | egenskap |
matrix:Array
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
En array med värden som används för matrisomformning. Antalet alternativ i arrayen måste vara lika med matrixX * matrixY
.
En matrisfaltning baseras på en n x m-matris, vilken beskriver hur ett givet pixelvärde i indatabilden kombineras med de intilliggande pixelvärdena för att resultera i ett nytt pixelvärde. Varje resulterande pixel bestäms genom att använda matrisen för motsvarande källpixel och dess intilliggande pixlar.
För en 3 x 3-matrisfaltning används följande formel för varje enskild färgkanal:
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
Vissa filterspecifikationer körs snabbare på en processor med SSE (Streaming SIMD Extensions). Nedan följer kriterier för snabbare faltningsoperationer:
- Filtret måste vara ett 3 x 3-filter.
- Alla filterfaktorer måste vara heltal mellan -127 och +127.
- Summan av alla filterfaktorer får inte ha ett absolut värde över 127.
- Om någon filterfaktor är negativ måste nämnaren vara mellan 2,00001 och 256.
- Om alla filterfaktorer är positiva måste nämnaren vara mellan 1,1 och 256.
- Marginalen måste vara ett heltal.
Obs! Om du skapar en ConvolutionFilter-instans med konstruktorn utan parametrar påverkas filterbeteendet av i vilken ordning du kopplar värdena till matrisegenskaper. I följande fall kopplas matrisarrayen, medan egenskaperna matrixX
och matrixY
fortfarande är inställda på 0
(standardvärdet):
public var myfilter:ConvolutionFilter = new ConvolutionFilter(); myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0]; myfilter.matrixX = 3; myfilter.matrixY = 3;
I följande fall kopplas matrisarrayen medan egenskaperna matrixX
och matrixY
är inställda på 3
:
public var myfilter:ConvolutionFilter = new ConvolutionFilter(); myfilter.matrixX = 3; myfilter.matrixY = 3; myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
Implementering
public function get matrix():Array
public function set matrix(value:Array):void
Utlöser
TypeError — Arrayen är null när den ställs in
|
matrixX | egenskap |
matrixY | egenskap |
preserveAlpha | egenskap |
preserveAlpha:Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Indikerar om alfakanalen bevaras utan filtereffekten eller om faltningsfiltret används på både alfakanalen och färgkanalerna. Värdet false
anger att faltningen används på alla kanaler, inklusive alfakanalen. Värdet true
anger att faltningen bara används på färgkanalerna. Standardvärdet är true
.
Implementering
public function get preserveAlpha():Boolean
public function set preserveAlpha(value:Boolean):void
ConvolutionFilter | () | Konstruktor |
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)
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Initierar en ny ConvolutionFilter-instans med de angivna parametrarna.
ParametrarmatrixX:Number (default = 0 ) — Matrisens x-led (antalet kolumner i matrisen). Standardvärdet är 0.
| |
matrixY:Number (default = 0 ) — Matrisens y-led (antalet rader i matrisen). Standardvärdet är 0.
| |
matrix:Array (default = null ) — En array med värden som används för matrisomformning. Antalet alternativ i arrayen måste vara lika med matrixX * matrixY .
| |
divisor:Number (default = 1.0 ) — Nämnaren som används under matrisomformning. Standardvärdet är 1. En nämnare som är summan av alla matrisvärden jämnar ut resultatets övergripande färgintensitet. Värdet 0 ignoreras och standardvärdet används i stället.
| |
bias:Number (default = 0.0 ) — Marginal att lägga till i resultatet av matrisomformningen. Standardvärdet är 0.
| |
preserveAlpha:Boolean (default = true ) — Värdet false anger att alfavärdet inte bevaras och att faltningen används på alla kanaler, inklusive alfakanalen. Värdet true anger att faltningen bara används på färgkanalerna. Standardvärdet är true .
| |
clamp:Boolean (default = true ) — För pixlar som ligger utanför källbilden innebär värdet true att indatabilden utökas längs sina kantlinjer efter behov, genom att färgvärdena vid indatabildens givna kant dupliceras. Värdet false innebär att en annan färg ska användas enligt specifikationen i egenskaperna color och alpha . Standardvärdet är true .
| |
color:uint (default = 0 ) — Den hexadecimala färg som ska ersätta pixlar utanför källbilden.
| |
alpha:Number (default = 0.0 ) — Alfa för ersättnings.
|
clone | () | metod |
override public function clone():BitmapFilter
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Returnerar en kopia av det här filterobjektet.
ReturnerarBitmapFilter — BitmapFilter – en ny instans av ConvolutionFilter med samma egenskaper som den ursprungliga ConvolutionMatrixFilter-instansen.
|
buildChild()
fyra gånger som läser in och visar fyra instanser av bilden. Varje anrop av buildChild()
tar en funktion som inte använder något filter för första instansen och ett annat faltningsfilter för varje efterföljande instans som ett argument.
Funktionen buildChild()
skapar ett nytt Loader-objekt med namnet loader
. För varje anrop till buildChild()
, lägger du till en händelseavlyssnare i Loader-objektet för att avlyssna complete
-händelser, som hanteras av funktionen buildChild()
.
Funktionerna applyBrightness()
, applySharpness()
och applyOutline()
använder olika värden för matrix
-arrayen för att få olika ConvolutionFilter-effekter.
Obs: Bäst resultat får du om du använder en bild som är ungefär 80 pixlar bred. Bildfilens namn och plats bör matcha värdet som du skickar till url
-egenskapen. Värdet som skickas till url
i exemplet pekar till exempel på en bildfil med namnet "Image.jpg" som finns i samma katalog som SWF-filen.
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, 01:40 PM Z