Bir bitmap'e, görünümünü değiştirmek için
noise()
veya
perlinNoise()
yöntemini kullanarak gürültü efekti uygulayabilirsiniz. Gürültü efekti, karıncalı gösteren bir televizyona benzetilebilir.
Bir bitmap'e gürültü efekti uygulamak için
noise()
yöntemini kullanın. Bu yöntem bir bitmap görüntünün belirli bir alanındaki piksellere rastgele bir renk değeri uygular.
Bu yöntem beş parametre kabul eder:
-
randomSeed
(int): Deseni belirleyen rastgele tohum sayısı. Adının içinde rastgele ifadesi geçmesine rağmen, aynı sayı iletildiğinde bu sayı aynı sonuçları oluşturur. Gerçekten rastgele bir sonuç elde etmek için
Math.random()
yöntemini kullanarak bu parametreye rastgele bir sayı iletin.
-
low
(uint): Bu parametre her bir piksel için üretilecek en düşük değeri belirtir (0-255). Varsayılan değer 0'dır. Bu değerin düşük olması daha koyu bir parazit deseni oluştururken daha yüksek bir değer verilmesi halinde daha parlak bir desen oluşacaktır.
-
high
(uint): Bu parametre her bir piksel için üretilecek en yüksek değeri belirtir (0-255). Varsayılan değer 255'tir. Bu değerin düşük olması daha koyu bir gürültü deseni oluştururken daha yüksek bir değer verilmesi halinde daha parlak bir desen oluşacaktır.
-
channelOptions
(uint): Bu parametre gürültünün bitmap nesnenin hangi kanalına uygulanacağını belirler. Bu sayı dört kanal ARGB değerlerinin her türlü kombinasyonu olabilir. Varsayılan değer 7'dir.
-
grayScale
(Boolean):
true
değeri verildiğinde, bu parametre bitmap piksellerine
randomSeed
değerini uygulayarak görüntünün tüm renklerini siler. Alfa kanalı bu parametreden etkilenmez. Varsayılan değer
false
'dır.
Aşağıdaki örnek bir bitmap görüntüsü oluşturur ve bu görüntüye mavi gürültü deseni uygular:
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
public class BitmapNoise1 extends Sprite
{
public function BitmapNoise1()
{
var myBitmap:BitmapData = new BitmapData(250, 250,false, 0xff000000);
myBitmap.noise(500, 0, 255, BitmapDataChannel.BLUE,false);
var image:Bitmap = new Bitmap(myBitmap);
addChild(image);
}
}
}
Daha canlı görünen bir doku oluşturmak isterseniz
perlinNoise()
yöntemini kullanın.
perlinNoise()
yöntemi duman, bulut, su, ateş ve hatta patlamalar için ideal olan gerçekçi ve canlı doku oluşturur.
Bir algoritma ile üretildiğinden
perlinNoise()
yöntemi bitmap tabanlı dokulardan daha az bellek kullanır. Ancak bu yine de, özellikle de eski bilgisayarlarda içeriğinizi yavaşlatarak ve ekranın kare hızından daha yavaş şekilde yeniden çizilmesine sebep olarak işlemci kullanımını etkileyebilir. Bunun ana nedeni perlin gürültü algoritmalarını işlemek için gereken kayan nokta hesaplamalarıdır.
Bu yöntem dokuz parametre kabul eder (ilk altısı gereklidir):
-
baseX
(Number): Oluşturulan desenlerin x (boyut) değerini belirler.
-
baseY
(Number): Oluşturulan desenlerin y (boyut) değerini belirler.
-
numOctaves
(uint): Bu paraziti oluşturmak üzere birleştirilecek gürültü veya ayrı gürültü işlevleri sayısı. Oktav sayısının yüksek olması daha detaylı görüntülerin oluşturulmasını sağlasa da aynı zamanda daha fazla işleme süresi gerektirir.
-
randomSeed
(int): Rastgele tohum sayısı aynen
noise()
işlevinde olduğu şekilde çalışır. Gerçekten rastgele bir sonuç elde etmek için
Math.random()
yöntemini kullanarak bu parametreye rastgele bir sayı iletin.
-
stitch
(Boolean): Bu yöntem
true
değeri verildiğinde bitmap dolgusu olarak döşemek üzere eksiz dokular oluşturmak için görüntünün geçiş kenarlarını birleştirmeyi (veya düzgünleştirmeyi) dener.
-
fractalNoise
(Boolean): Bu parametre, yöntemin oluşturduğu degradelerin kenarları ile ilgilidir.
true
değeri verildiğinde, yöntem efektin kenarlarını düzgünleştiren parçalı gürültü oluşturur.
false
değeri verildiğinde, türbülans oluşturur. Türbülanslı bir görüntünün degradesinde görünebilir kesintiler vardır, bu da alev veya deniz dalgası gibi keskin görsel efektleri daha gerçekçi hale getirir.
-
channelOptions
(uint):
channelOptions
parametresi aynen
noise()
yönteminde olduğu şekilde çalışır. Gürültü deseninin uygulanacağı (bitmap) renk kanalını belirler. Bu sayı dört kanal ARGB değerlerinin her türlü kombinasyonu olabilir. Varsayılan değer 7'dir.
-
grayScale
(Boolean):
grayScale
parametresi aynen
noise()
yönteminde olduğu şekilde çalışır.
true
değeri verildiğinde bu parametre bitmap piksellerine
randomSeed
değerini uygulayarak görüntünün tüm renklerini siler. Varsayılan değer
false
şeklindedir.
-
offsets
(Dizi): Her bir oktavın x ve y uzaklıklarına karşılık gelen noktalar dizisi. Uzaklık değerlerini işleyerek, bir görüntünün katmanlarını sorunsuzca kaydırabilirsiniz. Uzaklık dizisindeki her nokta belirli bir oktav gürültü işlevini etkiler. Varsayılan değer
null
şeklindedir.
Aşağıdaki örnek, yeşil ve mavi bulut efekti oluşturmak için
perlinNoise()
yöntemini çağıran bir 150 x 150 piksel BitmapData nesnesi oluşturur.
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
public class BitmapNoise2 extends Sprite
{
public function BitmapNoise2()
{
var myBitmapDataObject:BitmapData =
new BitmapData(150, 150, false, 0x00FF0000);
var seed:Number = Math.floor(Math.random() * 100);
var channels:uint = BitmapDataChannel.GREEN | BitmapDataChannel.BLUE
myBitmapDataObject.perlinNoise(100, 80, 6, seed, false, true, channels, false, null);
var myBitmap:Bitmap = new Bitmap(myBitmapDataObject);
addChild(myBitmap);
}
}
}