Paket | flash.filters |
Sınıf | public class ConvolutionFilter |
Miras Alma | ConvolutionFilter BitmapFilter Object |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Bir evrişim filtresi oluşturmak için ConvolutionFilter
sözdizimini kullanın. Filtrelerin kullanımı, filtreyi uyguladığınız nesneye bağlıdır.
- Filtreleri film kliplerine, metin alanlarına, düğmelere ve videoya uygulamak için
filters
özelliğini kullanın (DisplayObject öğesinden miras alınan). Nesneninfilters
özelliğini ayarladığınızda nesne değiştirilmez vefilters
özelliğini temizleyerek filtreyi kaldırabilirsiniz. - BitmapData nesnelerine filtre uygulamak için
BitmapData.applyFilter()
yöntemini kullanın. Bir BitmapData nesnesi üzerindeapplyFilter()
kullanıldığında kaynak BitmapData nesnesi ve filtre nesnesi alınır ve sonuç olarak ortaya filtrelenmiş bir görüntü çıkar.
Bir görüntüleme nesnesine filtre uygularsanız, nesnenin cacheAsBitmap
özelliğinin değeri true
olarak ayarlanır. Tüm filtreleri temizlerseniz, orijinal cacheAsBitmap
değeri geri yüklenir.
Elde edilen görüntü maksimum boyutları aşıyorsa, filtre uygulanmaz. AIR 1.5 ve Flash Player 10'da, maksimum boyut genişlik ve yükseklikte 8,191 pikseldir ve toplam piksel sayısı 16,777,215'yı geçemez. (Bu nedenle, bir görüntü 8,191 piksel genişliğindeyse en fazla 2,048 piksel yüksekliğinde olabilir.) Flash Player 9 ve önceki sürümleri ile AIR 1.1 ve önceki sürümlerinde, sınırlama yükseklikte 2.880 piksel ve genişlikte 2.880 pikseldir. Örneğin, bir filtre uygulanmışken büyük bir film klibine yakınlaştırma yaptığınızda, elde edilen görüntü maksimum boyutları aşarsa filtre kapatılır.
İlgili API Öğeleri
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
matris
Özellik | Tanımlayan: | ||
---|---|---|---|
alpha : Number
Yedek renk için alfa saydamlık değeri. | ConvolutionFilter | ||
bias : Number
Matris dönüştürme sonucuna eklenecek sapma miktarı. | ConvolutionFilter | ||
clamp : Boolean
Görüntünün kelepçelenmesi gerekip gerekmediğini gösterir. | ConvolutionFilter | ||
color : uint
Kaynak görüntüsündeki piksellerin yerine yedek olarak kullanılacak onaltılık renk. | ConvolutionFilter | ||
constructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru. | Object | ||
divisor : Number
Matris dönüştürmesi sırasında kullanılan bölen. | ConvolutionFilter | ||
matrix : Array
Matris dönüştürme için kullanılan değerler dizisi. | ConvolutionFilter | ||
matrixX : Number
Matrisin x boyutu (matristeki sütun sayısı). | ConvolutionFilter | ||
matrixY : Number
Matrisin y boyutu (matristeki satır sayısı). | ConvolutionFilter | ||
preserveAlpha : Boolean
Alfa kanalının filtre etkisi olmadan korunup korunmadığını veya evrişim filtresinin alfa kanalının yanı sıra renk kanallarında uygulanıp uygulanmadığını gösterir. | ConvolutionFilter |
Yöntem | Tanımlayan: | ||
---|---|---|---|
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)
Belirtilen parametreler ile bir ConvolutionFilter örneği başlatır. | ConvolutionFilter | ||
[geçersiz kıl]
Bu filtre nesnesinin kopyasını döndürür. | ConvolutionFilter | ||
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. | Object | ||
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. | Object | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. | Object | ||
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür. | Object | ||
Belirtilen nesnenin dize olarak temsil edilen halini döndürür. | Object | ||
Belirtilen nesnenin temel değerini döndürür. | Object |
alpha | özellik |
alpha:Number
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Yedek renk için alfa saydamlık değeri. Varsayılan değerler 0 ila 1,0'dır. Varsayıla değer 0'dır. Örneğin ,25, %25'lik bir saydamlık değeri ayarlar.
Uygulama
public function get alpha():Number
public function set alpha(value:Number):void
bias | özellik |
bias:Number
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Matris dönüştürme sonucuna eklenecek sapma miktarı. Sapma, her kanalın renk değerini artırır ve böylece koyu renkler daha parlak görünür. Varsayılan değer 0'dır.
Uygulama
public function get bias():Number
public function set bias(value:Number):void
clamp | özellik |
clamp:Boolean
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Görüntünün kelepçelenmesi gerekip gerekmediğini gösterir. Kaynak görüntünün dışında kalan pikseller için true
değeri, girdi görüntüsünün belirli kenarında renk değerlerini çoğaltarak girdi görüntüsünün kenarlıklarının her biri boyunca uzatıldığını gösterir. false
değeri, color
ve alpha
özelliklerinde belirtildiği şekilde başka bir rengin kullanılması gerektiğini gösterir. Varsayılan değer true
şeklindedir.
Uygulama
public function get clamp():Boolean
public function set clamp(value:Boolean):void
Örnek ( Bu örnek nasıl kullanılır? )
BitmapData
sınıfını kullanarak iki adet kutu oluşturur. Bunlardan birinin boyutu diğerinin yarısıdır. Örnek ilk yüklendiğinde, daha büyük kutu attachBitmap()
kullanılarak mc
öğesinin içine çizilir. mc
öğesi tıklatıldığında ve applyFilter()
yöntemi çağrıldığında, BitmapData
öğesinin largeBox
örneği smallBox
ile birlikte kaynak bitmap olarak yeniden çizilir. applyFilter()
öğesi smallBox
öğesini genişliği ve yüksekliği largeBox
öğesininkilerle aynı olarak belirtilmiş bir Rectangle
üzerinden çizdiği için kaynak bitmap, çizim alanından daha küçük olur. ConvolutionFilter
öğesinin clamp
özelliği bu durumda false
olarak ayarlanır ve kaynak bitmap tarafından kapsanmayan alan olan smallBox
; clampColor
ve clampAlpha
değişkenleri tarafından belirlendiği şekilde düz kırmızı olur.
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 | özellik |
color:uint
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Kaynak görüntüsünün dışındaki piksellerin yerine yedek olarak kullanılacak onaltılık renk. Bu, herhangi bir alfa bileşeni olmayan bir RGB değeridir. Varsayılan değer 0'dır.
Uygulama
public function get color():uint
public function set color(value:uint):void
divisor | özellik |
divisor:Number
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Matris dönüştürmesi sırasında kullanılan bölen. Varsayılan değer 1'dir. Tüm matris değerlerinin toplamı olan bölen, sonucun toplam renk yoğunluğunu azaltır. 0 değeri yok sayılır ve bunun yerine varsayılan değer kullanılır.
Uygulama
public function get divisor():Number
public function set divisor(value:Number):void
matrix | özellik |
matrix:Array
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Matris dönüştürme için kullanılan değerler dizisi. Dizideki öğe sayısı matrixX * matrixY
değerine eşit olmalıdır.
Bir matris dönüştürme, girdi görüntüsündeki belirli bir piksel değerinin, sonuç olarak ortaya bir piksel değeri çıkarmak için komşu piksel değerleriyle nasıl birleştiğini açıklayan n x m matrisine bağlıdır. Sonuç olarak ortaya çıkan her piksel, matrisi karşılık gelen kaynak piksele ve komşu piksellerine uygulayarak belirlenir.
3 x 3 matris evrişiminde, birbirinden ayrı her renk kanalı için aşağıdaki formül kullanılır:
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
Belirli filtre belirtimleri, SSE (Akış SIMD Uzantıları) sunan bir işlemci tarafından çalıştırıldığında daha hızlı çalışır. Aşağıdakiler, daha hızlı evrişim işlemleri için kriterlerdir:
- Filtre, 3x3 filtre olmalıdır.
- Tüm filtre terimleri -127 ve +127 arasındaki tam sayılar olmalıdır.
- Tüm filtre terimlerinin toplamının mutlak değeri 127'den büyük olmamalıdır.
- Herhangi bir filtre terimi negatifse, bölen 2,00001 ile 256 arasında olmalıdır.
- Tüm filtre terimleri pozitifse, bölen 1,1 ile 256 arasında olmalıdır.
- Sapma bir tam sayı olmalıdır.
Not: Yapıcıyı parametre olmadan kullanarak bir ConvolutionFilter örneği oluşturursanız, değerleri matris özelliklerine atadığınız sıra, filtrenin davranışını etkiler. Aşağıdaki durumda matrixX
ve matrixY
özelikleri hala 0
olarak ayarlıyken (varsayılan değer) matris dizisi atanmıştır:
public var myfilter:ConvolutionFilter = new ConvolutionFilter(); myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0]; myfilter.matrixX = 3; myfilter.matrixY = 3;
Aşağıdaki durumda matrixX
ve matrixY
özelikleri 3
değerine ayarlıyken matris dizisi atanmıştır:
public var myfilter:ConvolutionFilter = new ConvolutionFilter(); myfilter.matrixX = 3; myfilter.matrixY = 3; myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
Uygulama
public function get matrix():Array
public function set matrix(value:Array):void
Atar
TypeError — Array öğesi ayarlanırken boş değere sahiptir
|
matrixX | özellik |
matrixY | özellik |
preserveAlpha | özellik |
preserveAlpha:Boolean
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Alfa kanalının filtre etkisi olmadan korunup korunmadığını veya evrişim filtresinin alfa kanalının yanı sıra renk kanallarında uygulanıp uygulanmadığını gösterir. Bir false
değeri, evrişimin alfa kanalı da dahil olmak üzere tüm kanallara uygulandığını gösterir. Bir true
değeri, evrişimin yalnızca renk kanallarına uygulandığını gösterir. Varsayılan değer true
şeklindedir.
Uygulama
public function get preserveAlpha():Boolean
public function set preserveAlpha(value:Boolean):void
ConvolutionFilter | () | Yapıcı |
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)
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Belirtilen parametreler ile bir ConvolutionFilter örneği başlatır.
ParametrelermatrixX:Number (default = 0 ) — Matrisin x boyutu (matristeki sütun sayısı). Varsayılan değer 0'dır.
| |
matrixY:Number (default = 0 ) — Matrisin y boyutu (matristeki satır sayısı). Varsayılan değer 0'dır.
| |
matrix:Array (default = null ) — Matris dönüştürme için kullanılan değerler dizisi. Dizideki öğe sayısı matrixX * matrixY değerine eşit olmalıdır.
| |
divisor:Number (default = 1.0 ) — Matris dönüştürmesi sırasında kullanılan bölen. Varsayılan değer 1'dir. Tüm matris değerlerinin toplamı olan bölen, sonucun toplam renk yoğunluğuna eşit olur. 0 değeri yok sayılır ve bunun yerine varsayılan değer kullanılır.
| |
bias:Number (default = 0.0 ) — Matris dönüştürme sonucuna eklenecek sapma miktarı. Varsayılan değer 0'dır.
| |
preserveAlpha:Boolean (default = true ) — false değeri, alfa değerinin korunmadığını ve evrişimin alfa kanalı da dahil olmak üzere tüm kanallara uygulandığını gösterir. Bir true değeri, evrişimin yalnızca renk kanallarına uygulandığını gösterir. Varsayılan değer true şeklindedir.
| |
clamp:Boolean (default = true ) — Kaynak görüntünün dışında kalan pikseller için true değeri, girdi görüntüsünün belirli kenarında renk değerlerini çoğaltarak girdi görüntüsünün kenarlıklarının her biri boyunca uzatıldığını gösterir. false değeri, color ve alpha özelliklerinde belirtildiği şekilde başka bir rengin kullanılması gerektiğini gösterir. Varsayılan değer true şeklindedir.
| |
color:uint (default = 0 ) — Kaynak görüntüsündeki piksellerin yerine yedek olarak kullanılacak onaltılık renk.
| |
alpha:Number (default = 0.0 ) — Yedek rengin alfası.
|
clone | () | yöntem |
override public function clone():BitmapFilter
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Bu filtre nesnesinin kopyasını döndürür.
DöndürürBitmapFilter — BitmapFilter Orijinal ConvolutionFilter örneğiyle tamamen aynı özelliklere sahip yeni bir ConvolutionFilter örneği.
|
buildChild()
öğesini dört kez çağırır. buildChild()
öğesine yapılan her çağrı, ilk örneğe herhangi bir filtre ve birbirini izleyen her örneğe farklı bir evrişim filtresi uygulamayan bir işlevi argüman olarak alır.
buildChild()
işlevi, loader
adlı yeni bir Loader nesnesi oluşturur. buildChild()
öğesine yapılan her çağrı için, buildChild()
öğesine iletilen işlevle işlenen complete
olaylarını dinlemek üzere Loader nesnesine yeni bir olay dinleyicisi ekleyin.
applyBrightness()
, applySharpness()
ve applyOutline()
işlevleri farklı efektler elde etmek üzere matrix
dizisi için farklı değerler kullanır.
Not: En iyi sonuçlar için genişliği yaklaşık 80 piksel olan bir görüntü kullanın. Görüntü dosyasının adı ve konumu url
özelliğine ilettiğiniz değerle eşleşmelidir. Örneğin, örnekteki url
öğesine iletilen değer SWF dosyanızla aynı dizinde bulunan "Image.jpg" adlı bir görüntü dosyasına işaret eder.
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:09 PM Z