Zeichnen eines Kreises mit ActionScript
Verursachen Sie eine Gewohnheit MovieClip.drawCircle() Methode mit der zeichnenden API und rufen Sie sie auf einem Filmclip hervor. Sie können einen Kreis in ActionScript mit acht Kurven verursachen. Wenige Kurven ergibt einen verzerrten Kreis und zu viele Kurven hindert Leistung. Lassen Sie uns eine kundenspezifische Methode der MovieClip Kategorie für das Zeichnen der Kreise verursachen. Diese Methode, drawCircle(), läßt drei Parameter zu: Radius x y Definieren Sie die kundenspezifische drawCircle() Methode auf MovieClip.prototype, um es zu machen zugänglich für allen Filmclip instances: MovieClip.prototype.drawCircle = Funktion (Radius, x, y),
ist {// der Winkel von jedem der acht Segmente 45 Grad (360 teilten
sich durch 8), das// angleDelta var Einheitswinkel der
Gleichgestellten p/4 = Math.PI/4;
//Entdeckung der Abstand von der Mitte des Kreises zu den Abfertigungsschaltern für das Kurven var ctrlDist = radius/Math.cos(angleDelta/2); //initialisieren Sie den Winkel bis 0 und definieren Sie lokale Variablen, die für// Steuer- und Endepunkte var Winkel = 0 verwendet werden; var rx, Relais, Axt, ay; //Bewegung zum Ausgangspunkt, ein Radius auf der rechten Seite der Mitte des Kreises this.moveTo(x + Radius, y); //Wiederholung achtmal, acht Segmente für zu verursachen
(var I = 0; I < 8; i++) {
//Stufensprung der Winkel durch das angleDelta (p/4) zum des vollständigen Kreises (2p) zu verursachen. Winkel + = angleDelta; //die Abfertigungsschalter werden mit Sinus und Kosinus abgeleitet. rx = x + Math.cos(angle-(angleDelta/2))*(ctrlDist); Relais = y + Math.sin(angle-(angleDelta/2))*(ctrlDist); //die Ankerpunkte (Ende Punkte der Kurve) kann zu// zu den Abfertigungsschaltern ähnlich gefunden werden. Axt = x + Math.cos(angle)*radius; ay = y + Math.sin(angle)*radius; //abgehobener Betrag das Segment this.curveTo(rx, Relais, Axt, ay); }} Wie die drawCircle() Methode Funktionen besser mit einer wenig Erklärung verstanden wird. Der Abstand des Abfertigungsschalters für jedes Segment von der Mitte des Kreises wird gefunden, eine trigonometrische diese Formel zu verwenden Zustände, daß der Kosinus eines Winkels der angrenzenden Seite über der Hypothenuse gleich ist. Im Fall vom Kreis, ist der Winkel, der halbiert, ein Segment (folglich seinen Abfertigungsschalter auch schneiden) p/8 (angleDelta/2). Der Abstand zum Abfertigungsschalter von der Mitte des Kreises bildet die Hypothenuse des rechten Dreiecks. var ctrlDist = radius/Math.cos(angleDelta/2); Grundlegende trigonometrische Formeln können verwendet werden, um die x und y Koordinaten entlang dem Umkreis des Kreises zu finden, der den Winkel und die Hypothenuse gegeben wird. Für den Abfertigungsschalter ist der Hypothenusewert ctrlDist, und der Winkel ist Winkel - angleDelta/2, da dieser Winkel das Segment halbiert. Der Ankerpunkt wird gefunden, den Wert des Winkels, der, um errechnet wird der Winkel zu sein, der den Ankerpunkt schneidet, und des Radius des Kreises zu verwenden (da der Ankerpunkt auf dem Umkreis des Kreises immer sein sollte). So folgt er: rx = x + Math.cos(angle-(angleDelta/2))*(ctrlDist); Relais = y + Math.sin(angle-(angleDelta/2))*(ctrlDist); Axt = x + Math.cos(angle)*radius; ay = y + Math.sin(angle)*radius; Sobald Sie die drawCircle() Methode definiert und sie in Ihrem grellen Dokument eingeschlossen haben, können Sie einen Kreis mit gerade einigen Linien des Codes schnell zeichnen. Erinnern Sie daran, daß Sie noch eine Linie Art definieren müssen, bevor Blitz alles zeichnet. //verursachen Sie einen Filmclipfall, in dem Sie den Kreis
this.createEmptyMovieClip("circle_mc" zeichnen, 1);
//definieren Sie ein 1-pixel, Schwarzes, Vollinienart circle_mc.lineStyle(1, 0x000000, 100); //abgehobener Betrag ein Kreis von Radius 100, zentriert an (50.75). circle_mc.drawCircle(100, 50, 75); //abgehobener Betrag ein Kreis von Radius 65, zentriert an (0.0). circle_mc.drawCircle(65); Sie können einen Kreis füllen, indem Sie beginFill() oder beginGradientFill() vor drawCircle() hervorrufen und endFill() nach drawCircle() hervorrufen: this.createEmptyMovieClip("circle_mc", 1);
circle_mc.lineStyle(1, 0x000000, 100); //Gebrauch ein
1-pixel, Schwarzes, fester Rand circle_mc.beginFill(0x0000FF);
//Gebrauch eine feste blaue Fülle circle_mc.drawCircle(100);
circle_mc.endFill();
dieses ist ein Artikel, der von Elis Frugalo hinzugefügt
wird
|
|||
|