Om du vill ändra utseendet på en bitmapp kan du använda en bruseffekt med hjälp av metoden
noise()
eller
perlinNoise()
. En bruseffekt kan liknas vid den statiskhet som uppträder på en ej avstämd teveskärm.
Om du vill tillämpa en bruseffekt på en bitmapp använder du metoden
noise()
. Metoden använder ett godtyckligt färgvärde för pixlarna inom ett angivet område av en bitmappsbild.
Metoden godkänner fem parametrar:
-
randomSeed
(int): ett godtyckligt startvärde som anger mönstret. Trots namnet skapas samma resultat om samma värde skickas. Om du vill få ett sant godtyckligt resultat använder du metoden
Math.random()
för att skicka ett godtyckligt värde för den här parametern.
-
low
(uint): den här parametern refererar till det lägsta värde som ska genereras för varje pixel (0 till 255). Standardvärdet är 0. Om du anger ett lägre värde får du ett mörkare brusmönster och om du anger ett högre värde får du ett ljusare mönster.
-
high
(uint): den här parametern refererar till det högsta värde som ska genereras för varje pixel (0 till 255). Standardvärdet är 255. Om du anger ett lägre värde får du ett mörkare brusmönster och om du anger ett högre värde får du ett ljusare mönster.
-
channelOptions
(uint): den här parametern anger på vilken färgkanal för bitmappsobjektet som brusmönstret ska tillämpas. Värdet kan vara en kombination av några av de fyra ARGB-färgkanalsvärdena. Standardvärdet är 7.
-
grayScale
(Boolean): om värdet är
true
tillämpas värdet
randomSeed
på bitmappspixlarna, vilket effektivt tar bort alla färger från bilden. Alfakanalen påverkas inte av den här parametern. Standardvärdet är
false
.
I följande exempel skapas en bitmappsbild och tillämpas ett blått brusmönster:
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);
}
}
}
Om du vill skapa en mer organisk textur använder du metoden
perlinNoise()
. Med metoden
perlinNoise()
skapas realistiska organiska texturer som är idealiska för rök, moln, vatten, eld och även explosioner.
Eftersom metoden
perlinNoise()
genereras av en algoritm använder den mindre minne än bitmappsbaserade texturer. Den kan däremot fortfarande påverka processoranvändningen, så att det tar längre tid att visa innehåll och skärmen ritas om långsammare än bildrutehastigheten, särskilt på gamla datorer. Detta beror huvudsakligen på flyttalsberäkningarna som måste utföras för att Perlin-brusalgoritmerna ska bearbetas.
Metoden godkänner nio parametrar (de första sex är obligatoriska):
-
baseX
(Number): anger x-värdet (storlek) för skapade mönster.
-
baseY
(Number): anger y-värdet (storlek) för skapade mönster.
-
numOctaves
(uint): antal oktaver eller enskilda brusfunktioner som ska kombineras för att detta brus ska uppstå. Ju fler oktaver desto högre detaljrikedom får bilderna, men detta kräver också längre bearbetningstid.
-
randomSeed
(int): det godtyckliga startnumret fungerar på samma sätt som i funktionen
noise()
. Om du vill få ett sant godtyckligt resultat använder du metoden
Math.random()
för att skicka ett godtyckligt värde för den här parametern.
-
stitch
(Boolean): Om värdet är
true
försöker metoden maska (eller jämna ut) övergångskanterna i bilden för att skapa sömlösa texturer när en bitmappsfyllning används.
-
fractalNoise
(Boolean): Den här parametern relateras till kanterna på de övertoningar som genereras av metoden. Om värdet är
true
genereras fraktalbrus som jämnar ut kanterna. Om värdet är
false
genereras turbulens. En bild med turbulens har synliga avbrott i övertoningen som kan göra den bättre på att visa skarpare visuella effekter, till exempel flammor eller vågor på havet.
-
channelOptions
(uint): Parametern
channelOptions
fungerar på samma sätt som i metoden
noise()
. Den anger vilken färgkanal (för bitmappen) som brusmönstret ska tillämpas på. Värdet kan vara en kombination av några av de fyra ARGB-färgkanalsvärdena. Standardvärdet är 7.
-
grayScale
(Boolean): Parametern
grayScale
fungerar på samma sätt som i metoden
noise()
. Om värdet är
true
tillämpas värdet
randomSeed
på bitmappspixlarna, vilket effektivt tar bort alla färger från bilden. Standardvärdet är
false
.
-
offsets
(Array): En array med punkter som motsvarar x- och y-förskjutningar för varje oktav. Om du ändrar förskjutningsvärdena kan du rulla lagren i bilden på ett jämnt sätt. Varje punkt i förskjutningsarrayen påverkar en viss oktavbrusfunktion. Standardvärdet är
null.
I följande exempel skapas ett BitmapData-objekt på 150 x 150 pixlar som anropar metoden
perlinNoise()
för att generera en grön och blå molneffekt:
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);
}
}
}