Paket | flash.filters |
Sınıf | public final class ColorMatrixFilter |
Miras Alma | ColorMatrixFilter BitmapFilter Object |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Not: RGBA değerleri için, en önemli bayt kırmızı kanal değerini temsil eder. Bu sıra yeşil, mavi ve ardından alfayla devam eder.
Yeni bir renk matrisi filtresi oluşturmak için new ColorMatrixFilter()
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, görüntüleme nesnesinin cacheAsBitmap
özelliği true
olarak ayarlanır. Tüm filtreleri kaldırırsanız, 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 boyutlara ulaşırsa filtre kapatılır.
İlgili API Öğeleri
flash.display.BitmapData.applyFilter()
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
Özellik | Tanımlayan: | ||
---|---|---|---|
constructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru. | Object | ||
matrix : Array
4 x 5 renk dönüştürme için 20 öğelik bir dizi. | ColorMatrixFilter |
Yöntem | Tanımlayan: | ||
---|---|---|---|
ColorMatrixFilter(matrix:Array = null)
Yeni bir ColorMatrixFilter örneğini belirtilen parametrelerle birlikte başlatır. | ColorMatrixFilter | ||
[geçersiz kıl]
Bu filtre nesnesinin kopyasını döndürür. | ColorMatrixFilter | ||
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 |
matrix | özellik |
matrix:Array
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
4 x 5 renk dönüştürme için 20 öğelik bir dizi. matrix
özelliği, değerini doğrudan değiştirerek değiştirilemez (örneğin, myFilter.matrix[2] = 1;
). Bunun yerine, diziye giden bir başvuru almalısınız, başvuru üzerinde değişiklik yapmalısınız ve değeri sıfırlamalısınız.
Renk matrisi filtresi, her kaynak pikseli kırmızı, yeşil, mavi ve alfa bileşenlerine srcR, srcG, srcB, srcA şeklinde ayırır. Her dört kanalın sonucunu hesaplamak için görüntüdeki her pikselin değeri, dönüştürme matrisindeki değerlerle çarpılır. -255 ile 255 arasındaki uzaklık isteğe bağlı olarak her sonuca (matrisin her satırındaki beşinci öğe) eklenebilir. Filtre, her renk bileşenini tek bir pikselle birleştirebilir ve sonucu yazar. Aşağıdaki formülde, a[0] ile a[19] arasındaki değerler matrix
özelliğine iletilen 20 öğelik dizideki 0 ile 19 arasındaki girişlere karşılık gelir:
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]
Dizideki her renk değeri için, 1 değeri, renk kanalının değerini koruyarak çıktıya gönderilen kanalın %100'üne eşit olur.
Hesaplamalar, çarpılmamış renk değerleri üzerinde gerçekleştirilir. Girdi grafiği önceden çarpılmış renk değerlerinden oluşuyorsa, bu değerler otomatik olarak bu işleme yönelik çarpılmamış renk değerlerine dönüştürülür.
İki adet en iyileştirilmiş mod mevcuttur:
Yalnızca alfa. Filtreye, yalnızca alfa bileşenini ayarlayan bir matris ilettiğinizde, filtre burada gösterildiği gibi performansını en iyileştirir:
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)
Daha hızlı sürüm. Intel ® Pentium ® 3 ve daha yeni sürümleri ile Apple ® G4 ve daha yeni sürümleri gibi yalnızca SSE/AltiVec hızlandırıcıların etkin olduğu işlemcilerle kullanılabilir. Hızlandırıcı, çarpan terimleri -15,99 ila 15,99 aralığında olduğunda ve a[4], a[9], a[14], ve a[19] toplama terimleri -8000 ila 8000 aralığında olduğunda kullanılır.
Uygulama
public function get matrix():Array
public function set matrix(value:Array):void
Atar
TypeError — Array öğesi ayarlanırken boş değere sahiptir
|
ColorMatrixFilter | () | Yapıcı |
public function ColorMatrixFilter(matrix:Array = null)
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9 |
Yeni bir ColorMatrixFilter örneğini belirtilen parametrelerle birlikte başlatır.
Parametrelermatrix:Array (default = null ) — 4 x 5 matris olarak düzenlenmiş 20 öğelik bir dizi.
|
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 — Orijinal ColorMatrixFilter örneğiyle tamamen aynı özelliklere sahip yeni bir DisplacementMapFilter örneği.
|
buildChild()
öğesini dört kez çağırır. buildChild()
öğesine yapılan ilk çağrı null
öğesini bir argüman olarak alır ve ilk örneğe herhangi bir filtre uygulamaz. buildChild()
öğesine daha sonra yapılan her çağrı, görüntünün daha sonraki her örneğine farklı bir renk matrisi uygulayan 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.
applyRed()
, applyGreen()
ve applyBlue()
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.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, 01:09 PM Z