Det finns många alternativ tillgängliga för konfigurering av gradienter genererade med AS3-kod. I den här artikeln kommer vi att utforska olika alternativ med en interaktiv app som du kan använda för att ändra dessa alternativ i flygningen.
Spela runt med alternativen i SWF ovan. Den vänstra rektangeln visar den resulterande gradienten som den skulle visas när den dras in i en 50x50 rektangel. Den rätta rektangeln visar matrisen med den aktuella inställningen. Jämför de två medan du utforskar alla inställningar och det kommer alla att vara meningsfullt.
När du har skapat en lutning som du gillar, träffa Klicka här för kod
för att se en AS3-kodlista som du kan kopiera och klistra in i ditt eget projekt för att generera den gradient du har gjort.
I kodgenerationen har extra variabler lagts till, så att du enkelt kan ändra utseendet på gradienten.
gradientScaling
, använd detta för att öka storleken.gradientOffsetX
, använd detta för att flytta gradienten horisontellt.gradientOffsetY
, använd detta för att flytta lutningen vertikalt.För att skapa en gradient behöver du använda grafik
föremål för a Form
, eller någon klass det underklasser. Då behöver vi skapa gradientfyllningen, genom att ringa
Graphics.beginGradientFill ()
Dessa parametrar krävs:
type: String
färger: Array
alphas: Array
förhållanden: Array
Dessa parametrar är valfria:
matris: Matris = null
spreadMethod: String = "pad"
interpolationMethod: String = "rgb"
focalPointRatio: Number = 0
Jag kommer dock att gå men varje parameter senare. Om du hellre vill leka med det och försöker räkna ut det själv, har jag gjort en SWF bara av den anledningen, och det kan även generera funktionskod för den gradient du har gjort. Kolla in det på toppen av artikeln.
För fullständig dokumentation om hur du skapar gradienter, se LiveDocs om ämnet.
Ställ in lutningstypen med: flash.display.GradientType
Dessa tre arrays måste matcha upp. Så om du vill ha tre färger måste du också leverera tre alfas och tre förhållanden.
Färgerna behöver hexadecimala värden. (tycka om 0xFF0000
för rött)
Alfabetisk array behöver siffror från (och inklusive) 0 till 1.
Förhållandet array behöver siffror från (och inklusive) 0 till 255. Dessa måste vara i rätt ordning, så [100,0,200]
är inte giltigt, men [0.100.200]
är.
Här är ett exempel på vad som händer när du ändrar förhållandena:
Matrisen definierar hur gradienten kommer att se ut. Om du inte definierar den kommer den att ha en bredd på 200px. Istället, om du vill kontrollera hur gradienten kommer att se ut, måste du skapa en ny matris:
var gradientMatrix: Matrix = ny Matrix ();
Då behöver du skapa en lutningsbox på matrisen genom att ringa:
gradientMatrix.createGradientBox
Följande parametrar krävs:
width: Number
height: Number
Dessa parametrar är valfria:
rotation: Nummer = 0
tx: Number = 0
ty: Nummer = 0
bredd
är bredden på matrisen (ej påverkad av matrisrotation).
höjd
är matrisens höjd (inte påverkad av matrisrotation).
rotation
är matrisens rotation i radianer.
tx
är den horisontella förskjutningen av matrisen (ej påverkad av matrisrotation).
tack
är den vertikala förskjutningen av matrisen (ej påverkad av matrisrotation).
Om matrisen på något sätt inte täcker hela området du ritar, måste resten fyllas. Det finns tre olika sätt att hantera detta:
Ställ in spridningsmetoden med: flash.display.SpreadMethod
Det här är hur färgövergången beräknas, det finns två alternativ:
Ställ in interpolationsmetoden med: flash.display.InterpolationMethod
Detta har bara en effekt om du använder radiella gradienter. Det accepterar värden från och inklusive -1 till 1. Om du anger ett tal över 1, oroa dig inte, det kommer att vara standard till 1. Detta påverkas också av rotation (så att du kan göra det överst i inställning av brännpunkten till -1 och rotation till Pi / 2).
När du är klar måste du rita fyllningen. Detta kan utföras med någon av grafikfyllningsritningsmetoderna, som startFill ().
Om du inte använder (0,0) som startpunkt för ritningsmetoden måste du komma ihåg att ändra tx
och tack
matrisens värden.
Nu borde du vara redo att gå på nya äventyr med kodgenererade gradienter.
Tack för att du läser!