Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-11-2011, 15:53   #1 (permalink)
Fohlen-Power
 
Benutzerbild von enky
 
Registriert seit: Mar 2007
Beiträge: 1.223
Kuchendiagramm

Hallo zusammen,

folgendes Problem! Ich soll demnächst ein Kuchendiagramm erstellen. Ich hab mich jetzt schon die Forensuche und durch google gesucht, zwar auch Sachen gefunden, aber die erschlagen mich irgendwie allesamt.

Was ich müsste ist, wie zeichne ich nur einen bestimmten Teil eines Kreis, zb nur 45°.

Was ich so gelesen habe, rechnen wir hier mit cos, sin.

Was dahin gehen dann noch Klasse zu wissen wäre, wie kannn ich sagen, dass ich den Kreis zeichnen will, aber nicht bei 0° anfängt sondern bei 45°.

Ich danke euch vielmals für eure Hilfe, vll bin ich auch einfach überarbeitet...
__________________
Vielen Dank für euer Verständnis für einen Flash Noob !!!
enky ist offline   Mit Zitat antworten
Alt 03-11-2011, 17:30   #2 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.040
As3 Pie Chart | Flex Streamer
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 03-11-2011, 17:42   #3 (permalink)
Neuer User
 
Benutzerbild von andrelehnert
 
Registriert seit: Oct 2007
Ort: Kölle
Beiträge: 1.229
Hi, müsste selbsterklärend sein:
PHP-Code:
const RADIANS_TO_DEGREES:Number Math.PI 180;
const 
PRECISION :Number .1;
var 
spr:Sprite = new Sprite();
addChild(spr);

function 
drawEllipseSegment(col:uintstartAngle:Numberangle:NumberxRad:NumberyRad:Number)
{
    var 
spr.graphics;
    var 
currAngle:Number startAngle;
    
g.moveTo(00);
    
g.beginFill(col100);
    
g.lineStyle(1col100);
    while (
currAngle <= angle startAngle)
    {
        var 
x:Number Math.sin(currAngle RADIANS_TO_DEGREES) * xRad;
        var 
y:Number Math.cos(currAngle RADIANS_TO_DEGREES) * yRad;
        
g.lineTo(xy);
        
currAngle += PRECISION;
    }
    
g.endFill();
}

drawEllipseSegment(0xcc00004560100100); 
LG ANdré
__________________
Die Hoffnung stirbt zuletzt.
Aber sie stirbt.

Geändert von andrelehnert (03-11-2011 um 17:44 Uhr)
andrelehnert ist offline   Mit Zitat antworten
Alt 03-11-2011, 18:02   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
@andrelehnert+milchreis: Das mit lineTo zu lösen, find ich hier ziemlich unschön, weil man so unnötigerweise Unmengen an Punkten produziert. Kurven sollte man schon mit curveTo zeichnen.

Hier mal die passende Klasse aus meinem utils-Paket:
PHP-Code:
package com.martinkraft.utils {
    
    
import flash.display.Graphics;
    
import flash.geom.Point;
    
import flash.geom.Rectangle;
    
import com.martinkraft.geom.Util2D;
    
    public class 
GraphicsUtil{
        
        
////
        
        
static public function drawRingClockwisegraphics:Graphicsoffset:PointouterRadius:NumberinnerRadius:Number 0segmentRad:Number 360,  startRad:Number 0):void {
            return 
drawRinggraphicsoffsetouterRadiusinnerRadiusMathUtil.toRad(-segmentRad), MathUtil.toRad(180-startRad));
        }
        
        static public function 
drawRingDeggraphics:Graphicsoffset:PointouterRadius:NumberinnerRadius:Number 0segmentRad:Number 360,  startRad:Number 0):void {
            return 
drawRinggraphicsoffsetouterRadiusinnerRadiusMathUtil.toRad(segmentRad), MathUtil.toRad(startRad));
        }
        
        static public function 
drawRinggraphics:Graphicsoffset:PointouterRadius:NumberinnerRadius:Number 0segmentRad:Number Math.PI 2,  startRad:Number 0):void {
            
            if (!
offsetoffset = new Point();
            
            var 
steps        :uint Math.ceilMath.abs(segmentRad Math.PI) );
            var 
partRad        :Number segmentRad steps;
            var 
halfPartRad    :Number partRad 2;
            var 
endRad        :Number startRad segmentRad;
            
            var 
curveFactor    :Number Math.coshalfPartRad );
            var 
curveRadius    :Number curveFactor outerRadius;
            
            var 
i            :uint;
            
            
// OuterCircle ////////////////////////
            
            
var rad            :Number startRad;
            var 
startPoint    :Point Util2D.fromRad(radouterRadius).add(offset);
            
moveToPoint(graphicsstartPoint);
            
            while(++
<= steps) {
                
rad += partRad;
                
curveToPoints(graphicsUtil2D.fromRad(rad halfPartRadcurveRadius).add(offset), Util2D.fromRad(radouterRadius).add(offset));
            } 
            
            if (
innerRadius === 0) { 
                
// Center /////////////////////////
                
                
lineToPoint(graphicsoffset);
                
            } else {
                
// InnerCircle ////////////////////
                
                
curveRadius curveFactor innerRadius;
                
lineToPointgraphicsUtil2D.fromRad(radinnerRadius).add(offset));
                
                while(--
0) {
                    
rad -= partRad;
                    
curveToPoints(graphicsUtil2D.fromRad(rad halfPartRadcurveRadius).add(offset), Util2D.fromRad(radinnerRadius).add(offset));
                } 
            }
            
            
lineToPoint(graphicsstartPoint);
        }
        
        static public function 
drawRectanglegraphics:Graphicsrect:Rectangle ):void {
            
graphics.drawRectrect.leftrect.toprect.widthrect.height );
        }
        
        static public function 
drawRoundedRectanglegraphics:Graphicsrect:Rectangle, ...radii:Array ):void {
            if (
radii.length <= 0) {
                
drawRectangle(graphicsrect);
                return;
            }
            
            while (
radii.length 4radii.push(0);
            
            var 
previous:Vector.<Point> = new <Point>[
                new 
Point(01),
                new 
Point(-10),
                new 
Point(0, -1),
                new 
Point(10)
            ];
            var 
following:Vector.<Point> = new <Point>[
                new 
Point(10),
                new 
Point(01),
                new 
Point(-10),
                new 
Point(0, -1)
            ];
            var 
points:Vector.<Point> = new <Point>[
                new 
Point(rect.leftrect.top),
                new 
Point(rect.rightrect.top),
                new 
Point(rect.rightrect.bottom),
                new 
Point(rect.leftrect.bottom),
            ];
            
            var 
min:Number Math.min(rect.widthrect.height)/2;
            var 
r:Number;
            var 
p:Point;
            var 
drawTo:Function = function(x:Numbery:Number):void {
                
graphics.moveTo(xy);
                
drawTo graphics.lineTo;
            }
            
            for (var 
i:uint 0radii.lengthi++ ) {
                
Math.min(radii[i], min);
                
points[i];                
                if (
r) {
                    
drawTo(
                        
p.previous[i].x,
                        
p.previous[i].y
                    
);
                    
graphics.curveTo(
                        
p.x,
                        
p.y,
                        
p.following[i].x,
                        
p.following[i].y
                    
);
                } else {
                    
drawTo(p.xp.y);
                }
            }
            
        }
        
        static public function 
drawRoundedRectgraphics:Graphicsx:Numbery:Numberwidth:Numberheight:Number, ...radii:Array ):Rectangle {
            var 
rect:Rectangle = new Rectangle(xywidthheight);
            
drawRoundedRectangle.apply(null, [graphicsrect].concat(radii) );
            return 
rect;
        }
        
        static public function 
drawLinegraphics:Graphics, ...xYs:Array):void {
            var 
l:uint xYs.length;
            if (
2) return;
            var 
i:uint 0;
            
graphics.moveTo(xYs[i++], xYs[i++]);
            while (
lgraphics.lineTo(xYs[i++], xYs[i++]);
        }
        
        static public function 
drawLinePointsgraphics:Graphics, ...points:Array ):void {
            var 
l:uint points.length;
            if (
1) return;
            
            var 
point:Point Point(points[0]);
            
graphics.moveTo(point.xpoint.y);
            
            for (var 
i:uint 1li++) {
                
point Point(points[i]);
                
graphics.lineTo(point.xpoint.y);
            }
        }
        
        static public function 
drawCurvegraphics:Graphics, ...xYs:Array):void {
            var 
l:uint xYs.length;
            if (
2) return;
            var 
i:uint 0;
            
graphics.moveTo(xYs[i++], xYs[i++]);
            while (
lgraphics.curveTo(xYs[i++], xYs[i++], xYs[i++], xYs[i++]);
        }
        
        static public function 
drawCurvePointsgraphics:Graphics, ...points:Array ):void {
            var 
l:uint points.length;
            if (
1) return;
            
            var 
curvePoint:Point;
            var 
point:Point Point(points[0]);
            
graphics.moveTo(point.xpoint.y);
            
            for (var 
i:uint 1l+= 2) {
                
curvePoint Point(points[i]);
                
point Point(points[i+1]);
                
graphics.curveTo(curvePoint.xcurvePoint.ypoint.xpoint.y);
            }
        }
        
        static public function 
moveToPointgraphics:Graphicsp:Point ):void {
            
graphics.moveTo(p.xp.y);
        }
        
        static public function 
lineToPointgraphics:Graphicsp:Point ):void {
            
graphics.lineTo(p.xp.y);
        }
        
        static public function 
curveToPointsgraphics:GraphicscontrolPoint:PointanchorPoint:Point ):void {
            
graphics.curveTocontrolPoint.xcontrolPoint.yanchorPoint.xanchorPoint.);
        }

        
////
        
    
}


__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (03-11-2011 um 18:14 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 03-11-2011, 19:27   #5 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.040
da hast du recht.

An deinem Beitrag stört mich das "meine".
Gibt's denn kein vernünftiges Grafik framework?
Ich kenne bloß degrafa, was aber wohl eingeschlafen ist.
Als ich das letzte mal geschaut habe, gab's das auch nicht für pures As3.

Vor 3D Engines kann man sich ja nicht mehr retten, aber wenn's um Pacman geht, kocht wieder jeder selbst.
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 03-11-2011, 19:59   #6 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
[QUOTE=milchreis;2005855]da hast du recht.

Zitat:
Zitat von milchreis Beitrag anzeigen
An deinem Beitrag stört mich das "meine".
Gibt's denn kein vernünftiges Grafik framework?
Keine Ahnung.

Aber ist es nicht normal, dass jeder Entwickler mit der Zeit häufig verwendete Funktionen und Klassen sammelt und sich so eine Art Werkzeugkasten aufbaut? Das betrifft ja nicht nur die Grafik, sondern auch alle möglichen Aufgaben, wie irgendwelche mathematischen Algorithmen, etc.

Man kann ja nicht immer darauf warten, das irgendwer irgendwann mal dafür ein Framework schreibt?!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 03-11-2011, 20:20   #7 (permalink)
Neuer User
 
Benutzerbild von andrelehnert
 
Registriert seit: Oct 2007
Ort: Kölle
Beiträge: 1.229
@Martin:
Ja - hast Du recht.

Ich habe mit curveTo noch nicht allzuviel gearbeitet - deshalb ists nicht
immer gleich präsent.

Frameworks muss man erstens immer erstmal suchen/finden und sich
einarbeiten.
Ich hab für einfachere Problemstellungen(Algorithmen, Positionierung, scaling, Interactivität) auch ne Menge selbstgeschriebenes Zeug in meinem utils-Ordner.
Der Vorteil ist die mir warm-vertraute Struktur und problembezogene schnelle Anpassbarkeit. So produziere ich weniger Overhead und recherchiere nicht standig noch diese und jene Bibliotheken.

Bei komplexeren Problemstellungen sieht das natürlcih anders aus. Ne eigene 3D-Engine hab ich mir nicht geschrieben - mal davon abgesehen, das ICH das auch nicht könnte.

LG ANdré
__________________
Die Hoffnung stirbt zuletzt.
Aber sie stirbt.
andrelehnert ist offline   Mit Zitat antworten
Alt 04-11-2011, 14:53   #8 (permalink)
Fohlen-Power
 
Benutzerbild von enky
 
Registriert seit: Mar 2007
Beiträge: 1.223
Vielen DANK für eure Postings! Hat schon sehr geholfen.

Nun hab ich etwas rumgebastelt und es geht auch soweit nur ein Fehler tritt auf. Am besten mal die FLA anschauen, ist als cs4 und cs5 drin.

Das Problem ist, dass wenn ich Set2 aktiviere. nicht alle Flächen eingefärbt werden, aber sie durchaus in der Berechnung einen Platz finden, also Tortendiagramm wird richtig dargestellt aber sie sind nicht sichtbar.

Irgendwie finde ich den Fehler nicht.
Angehängte Dateien
Dateityp: zip diagramm2.zip (17,7 KB, 4x aufgerufen)
__________________
Vielen Dank für euer Verständnis für einen Flash Noob !!!
enky ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Flash CS3] Kuchendiagramm harego ActionScript 1 2 25-03-2010 09:44
Timer als Kuchendiagramm alexpetri ActionScript 1 3 17-03-2009 13:56
Kuchendiagramm malen mit Actionscript Arne_Schmidt ActionScript 1 1 27-02-2004 15:35
Kuchendiagramm aus MySQL lhakpa2 Flash und Datenbanken 2 27-09-2003 17:16
Kuchendiagramm ohne Generator ezekiel Flash und Datenbanken 1 03-09-2002 12:28


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:53 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele