Slettet bruger
13. januar 2007 - 09:41
Der er
8 kommentarer og
1 løsning
Problem med beginGradientFill
Hej eksperter!
Jeg har her en kode:
import flash.geom.*;
var MATRIX:Matrix = new Matrix();
MATRIX.createGradientBox(WIDTH, HEIGHT, 90, 0, 0);
this.beginGradientFill("linear", [0xCC0000, 0x220000], [100, 100], [0, 255], MATRIX);
this.moveTo(8, 0);
this.lineTo(WIDTH-10, 0);
this.curveTo(WIDTH, 0, WIDTH, 8);
this.lineTo(WIDTH, HEIGHT-8);
this.curveTo(WIDTH, HEIGHT, WIDTH-8, HEIGHT);
this.lineTo(8, HEIGHT);
this.curveTo(0, HEIGHT, 0, HEIGHT-8);
this.lineTo(0, 8);
this.curveTo(0, 0, 8, 0);
this.endFill();
Men der er et problem:
Den lyse "ende" (øverst) af farven hælder lidt mod højre, og den mørke (nederst) hælder mod venstre.
Hvorfor og hvordan løses det (farvetoningen skal ske direkte vertikalt?
13. januar 2007 - 10:25
#2
I din createGradientBox har du defineret at gradienten skal roteres 90 radianer. Ret det til 0 eller undlad det helt da default værdien er 0:
MATRIX.createGradientBox(WIDTH, HEIGHT);
Slettet bruger
13. januar 2007 - 11:18
#3
Nåh, der er radianer!
HADER radianer!
De har en evne til at spolere enhver god matematikaflevering!!!
Slettet bruger
13. januar 2007 - 11:20
#4
Og nej, hvis den er 0, da den lyse farve så opstår i venstre side, og den mørke i højre - og det skal IKKE være horisontal toning, men VERTIKAL.
Hvad er 90 grader i radianer?
13. januar 2007 - 11:25
#5
Ah sorry, havde overset det skulle være vertikalt.
Du kan omregne grader til radiner med denne funktion:
function degToRad(degrees:Number):Number {
return (degrees/180)*Math.PI;
}
Så du skriver bare:
MATRIX.createGradientBox(WIDTH, HEIGHT, degToRad(90));
Slettet bruger
13. januar 2007 - 11:28
#6
Aaah, pi/2 ofc :)
Så Math.PI/2...
Hov, nu har du også skrevet noget - ja, men jeg skal ikke bruge en sådan funktion, da kun dette skal omregnes - og ikke andet i hele filen.
Takker, bare smid et svar :D