gefüllte Kugeln in Flash 8 mit Actionscript 2 zeichnen geschrieben am 13.09.2008
Zwei Funktionen zum zeichnen von Kreisen und Kugeln:Aus der Flashhilfe stammt die drawCircle-Funktion:
ActionScript
function drawCircle(mc:MovieClip, x:Number, y:Number, r:Number):Void {
mc.moveTo(x+r, y);
mc.curveTo(r+x, Math.tan(Math.PI/8)*r+y, Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
mc.curveTo(Math.tan(Math.PI/8)*r+x, r+y, x, r+y);
mc.curveTo(-Math.tan(Math.PI/8)*r+x, r+y, -Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
mc.curveTo(-r+x, Math.tan(Math.PI/8)*r+y, -r+x, y);
mc.curveTo(-r+x, -Math.tan(Math.PI/8)*r+y, -Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
mc.curveTo(-Math.tan(Math.PI/8)*r+x, -r+y, x, -r+y);
mc.curveTo(Math.tan(Math.PI/8)*r+x, -r+y, Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
mc.curveTo(r+x, -Math.tan(Math.PI/8)*r+y, r+x, y);
}
Diese Funktion wird in meiner drawKugel-Funktion benutzt um eine Kugel mit Radialer Füllung zu zeichnen:ActionScript
function drawKugel(mc:MovieClip, x:Number, y:Number, r:Number):Void{
var matrix=new Matrix();
//Verlauf mit etwas Versatz definieren
matrix = {a:r*2+r/4, // =dx F1
b:0,
c:0,
d:0,
e:r*2+r/4, //=dy F1
f:0,
g:x-r/4, //x
h:y-r/4, //y
i:1};
mc.beginGradientFill("radial",
[0xffffff, 0xD2EFCB, 0x628558, 0x3f1f1f], //Farbe
[100,100, 100,100], //Alpha
[110,128, 245,255], //Farbverteilung Verhältnis
matrix,
"radial","linearRGB", 0.0);
drawCircle(mc,x,y,r);
mc.endFill();
}
Möchte man eine einfache Fläche mit einem Farbverlauf füllen geht das so:ActionScript2
mc.beginGradientFill('linear',
[0x565656, 0x888888], //Farbe
[17,68], //Alpha
[0,255], //Farbverteilung Verhältnis
{ matrixType:'box', x:00, y:00, w:200, h:24, r:(90/180)*Math.PI },//90°=von oben nach unten
'pad', 'linearRGB');
mc.moveTo(0,0);
mc.lineTo(200,0);
mc.lineTo(200,24);
mc.lineTo(0,24);
mc.lineTo(0,0);
mc.endFill();