Gebruik de methoden
beginGradientFill()
en
lineGradientStyle()
van de klasse flash.display.Graphics om verlopen te definiëren die in vormen moeten worden gebruikt. Wanneer u een verloop definieert, geeft u een matrix op als een van de parameters van deze methoden.
De eenvoudigste manier om de matrix te definiëren is om de methode
createGradientBox()
van de klasse Matrix te gebruiken; hierbij wordt een matrix gemaakt die wordt gebruikt om het verloop te definiëren. U definieert de schaal, rotatie en positie van het verloop met de parameters die aan de methode
createGradientBox()
zijn doorgegeven. De methode
createGradientBox()
accepteert de volgende parameters:
-
Breedte verloopvak: de breedte (in pixels) waarover het verloop zich verspreidt.
-
Hoogte verloopvak: de hoogte (in pixels) waarover het verloop zich verspreidt.
-
Rotatie verloopvak: de rotatie (in radialen) die op het verloop moet worden toegepast.
-
Horizontale translatie: hoe ver (in pixels) het verloop horizontaal verschuift.
-
Verticale translatie: hoe ver (in pixels) het verloop verticaal verschuift.
Bekijk bijvoorbeeld een verloop met de volgende kenmerken:
-
GradientType.LINEAR
-
Twee kleuren, groen en blauw, met de array
ratios
ingesteld op
[0, 255]
-
SpreadMethod.PAD
-
InterpolationMethod.LINEAR_RGB
In de volgende voorbeelden ziet u verlopen waarin de parameter
rotation
van de methode
createGradientBox()
afwijkt zoals aangegeven, maar alle andere instellingen hetzelfde blijven:
width = 100;
height = 100;
rotation = 0;
tx = 0;
ty = 0;
|
|
width = 100;
height = 100;
rotation = Math.PI/4; // 45°
tx = 0;
ty = 0;
|
|
width = 100;
height = 100;
rotation = Math.PI/2; // 90°
tx = 0;
ty = 0;
|
|
In de volgende voorbeelden worden het effect getoond op een groen naar blauw, lineair verloop waarin de parameters
rotation
,
tx
en
ty
van de methode
createGradientBox()
afwijken zoals aangegeven, maar alle andere instellingen hetzelfde blijven:
width = 50;
height = 100;
rotation = 0;
tx = 0;
ty = 0;
|
|
width = 50;
height = 100;
rotation = 0
tx = 50;
ty = 0;
|
|
width = 100;
height = 50;
rotation = Math.PI/2; // 90°
tx = 0;
ty = 0;
|
|
width = 100;
height = 50;
rotation = Math.PI/2; // 90°
tx = 0;
ty = 50;
|
|
De parameters
width
,
height
,
tx
en
ty
van de methode
createGradientBox()
hebben ook invloed op de grootte en positie van een verloopvulling
radial
, zoals u in het volgende voorbeeld ziet:
width = 50;
height = 100;
rotation = 0;
tx = 25;
ty = 0;
|
|
De volgende code produceert het laatste radiale verloop dat wordt weergegeven:
import flash.display.Shape;
import flash.display.GradientType;
import flash.geom.Matrix;
var type:String = GradientType.RADIAL;
var colors:Array = [0x00FF00, 0x000088];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var spreadMethod:String = SpreadMethod.PAD;
var interp:String = InterpolationMethod.LINEAR_RGB;
var focalPtRatio:Number = 0;
var matrix:Matrix = new Matrix();
var boxWidth:Number = 50;
var boxHeight:Number = 100;
var boxRotation:Number = Math.PI/2; // 90°
var tx:Number = 25;
var ty:Number = 0;
matrix.createGradientBox(boxWidth, boxHeight, boxRotation, tx, ty);
var square:Shape = new Shape;
square.graphics.beginGradientFill(type,
colors,
alphas,
ratios,
matrix,
spreadMethod,
interp,
focalPtRatio);
square.graphics.drawRect(0, 0, 100, 100);
addChild(square);
De breedte en hoogte van de verloopvulling wordt bepaald door de breedte en hoogte van de verloopmatrix in plaats van door de breedte of hoogte die met het object Graphics is getekend. Wanneer u met het object Graphics tekent, tekent u wat er bij die coördinaten in de verloopmatrix bestaat. Zelfs als u een van de methoden shape van een object Graphics gebruikt, zoals
drawRect()
, rekt het verloop niet uit tot de grootte van de vorm die wordt getekend; de grootte van het verloop moet in de verloopmatrix zelf worden opgegeven.
In het volgende voorbeeld ziet u het visuele verschil tussen de afmetingen van de verloopmatrix en de afmetingen van de tekening zelf.
var myShape:Shape = new Shape();
var gradientBoxMatrix:Matrix = new Matrix();
gradientBoxMatrix.createGradientBox(100, 40, 0, 0, 0);
myShape.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x00FF00, 0x0000FF], [1, 1, 1], [0, 128, 255], gradientBoxMatrix);
myShape.graphics.drawRect(0, 0, 50, 40);
myShape.graphics.drawRect(0, 50, 100, 40);
myShape.graphics.drawRect(0, 100, 150, 40);
myShape.graphics.endFill();
this.addChild(myShape);
Deze code tekent drie verlopen met dezelfde vullingstijl, die is opgegeven met een gelijke verdeling van rood, groen en blauw. De verlopen worden getekend met de methode
drawRect()
met pixelbreedten van respectievelijk 50, 100 en 150. De verloopmatrix die wordt opgegeven in de methode
beginGradientFill()
wordt gemaakt met een breedte van 100 pixels. Dit houdt in dat het eerste verloop slechts de helft van het verloopspectrum bevat, het tweede verloop alles bevat en het derde verloop alles bevat en daarbij 50 pixels blauw extra heeft die naar rechts uitwijken.
De methode
lineGradientStyle()
werkt net als
beginGradientFill()
, behalve dat niet alleen het verloop moet worden gedefinieerd, maar dat de dikte van de streek ook moet worden opgegeven met de methode
lineStyle()
voordat u begint met tekenen. De volgende code tekent een vak met een rode, groene en blauwe verloopstreek:
var myShape:Shape = new Shape();
var gradientBoxMatrix:Matrix = new Matrix();
gradientBoxMatrix.createGradientBox(200, 40, 0, 0, 0);
myShape.graphics.lineStyle(5, 0);
myShape.graphics.lineGradientStyle(GradientType.LINEAR, [0xFF0000, 0x00FF00, 0x0000FF], [1, 1, 1], [0, 128, 255], gradientBoxMatrix);
myShape.graphics.drawRect(0, 0, 200, 40);
this.addChild(myShape);
Zie
Matrix-objecten gebruiken
voor meer informatie over de klasse Matrix