Avatar billede -42- Nybegynder
06. august 2003 - 12:50 Der er 14 kommentarer og
1 løsning

pie chart

Hvordan laver jeg nemmest et piechart, hvor procenterne skal passe?
Avatar billede barklund Nybegynder
06. august 2003 - 13:51 #1
Avatar billede -42- Nybegynder
06. august 2003 - 14:12 #2
Tak har hentet det, men det vil ikke installeres. Den siger jeg ikke har flash 6.0?????
Avatar billede -42- Nybegynder
06. august 2003 - 14:14 #3
min extensionmanager kan kun finde dreamweaver 4....
Avatar billede baitianlong Nybegynder
07. august 2003 - 02:58 #4
Du kan tegne en streg i et movieclip, fra krydset og opefter, træk det ind i filmen, og giv den instancenavnet "streg", krydr med dette script:

onClipEvent(load) {
if(_name == "streg") {
    farve = new Color(this);
    var1 = 30;
    var2 = 25;
    var3 = 40;
    var4 = 5;
    for(i = 0; i < 360; i++) {
        this.duplicateMovieClip("streg" + i, i);
        _rotation++;
        if(i < var1/100 * 360) farve.setRGB(0xff0000);
        else if(i < (var1 + var2)/100 * 360) farve.setRGB(0x00ff00);
        else if(i < (var1 + var2 + var3)/100 * 360) farve.setRGB(0x0000ff);
        else farve.setRGB(0x225577);
    }
}
}

i var 1, 2, 3, 4 skriver du de ønskede procenttal.

Du kan se den her (o;

http://62.199.241.199/piechart.html

eller hente en fil her:

http://62.199.241.199/piechart.fla
Avatar billede barklund Nybegynder
08. august 2003 - 01:08 #5
(legende - lær nu at bruge Drawing API, den er jo lavet til lige dette formål ;)
Avatar billede baitianlong Nybegynder
08. august 2003 - 02:19 #6
Ha ha, hvor er du "sød", Morten.. (o;

Jeg prøvede det, men kunne ikke finde ud af det - piv piv - Jeg er dummere end snot (o;

createEmptyMovieClip("streg", 0);
streg.onEnterFrame = function() {
  if(!nr2) {
      this.lineStyle(1, 0x000000, 100);
      this.moveTo(Stage.width / 2, Stage.height / 2);
      this.lineTo(_x, _y - 100);
      farve = new Color(this);
      var1 = 30;
      var2 = 25;
      var3 = 40;
      var4 = 5;
      for(i = 0; i < 360; i++) {
        this.duplicateMovieClip("streg" + i, i);
        this._rotation++;
        if(i < var1/100 * 360) farve.setRGB(0xff0000);
        else if(i < (var1 + var2)/100 * 360) farve.setRGB(0x00ff00);
        else if(i < (var1 + var2 + var3)/100 * 360) farve.setRGB(0x0000ff);
        else farve.setRGB(0x225577);
      }
      nr2 = true;
  }
}

VRÆÆÆÆLLLL :(
Avatar billede baitianlong Nybegynder
08. august 2003 - 02:57 #7
eller skal vi ud i en:

MovieClip.prototype.blah = function(mc) {
  tegnLortetPåMC();
}
_root.blah(this);
Avatar billede baitianlong Nybegynder
08. august 2003 - 02:58 #8
Jeg kan ikke finde ud af flash !! Er det der Swish sjovt :D

:S (men jeg er god til at larme)
Avatar billede baitianlong Nybegynder
08. august 2003 - 03:06 #9
Jeg synes nu i øvrigt at min løsning på spørgsmålet er ok ( i 1998 ) ... såå slap bare af (o;
Avatar billede barklund Nybegynder
10. august 2003 - 20:48 #10
Sådan ville jeg lave den - jeg synes, at den bliver pæn:

var radius = 50;
var center_x = 100;
var center_y = 100;
var values = [12, 74, 56, 78, 74, 56, 78];
var labels = ["børn", "dyr", "nørder", "grafikere", "fedtede", "hunde", "blyanter"];
var colors = [0x00FF00, 0x0000FF, 0xFF0000, 0x00FFFF, 0xFF00FF, 0xFF7F00, 0x7F33F6];
var circle_mc = _root.createEmptyMovieClip("circle_mc", 1);
circle_mc.moveTo(center_x+radius, center_y);
var i, dx, dy, incs = new Array(), perc = new Array();;
var sum = 0;
for (i = 0; i < values.length; i++) {
    sum += values[i];
}
for (i = 0; i < values.length; i++) {
    incs[i] = incs[i-1] + (values[i] / sum) * Math.PI * 2;
    perc[i] = Math.round((values[i] / sum) * 100);
}
incs[-1] = -0.0001;
incs[values.length] = 2*math.PI;
var counter = -1;
for (i = 0; i <= 2 * Math.PI; i += 0.05) {
    dx = center_x + radius * Math.cos(i);
    dy = center_y + radius * Math.sin(i);
    circle_mc.lineTo(dx, dy);
    if (incs[counter] < i) {
        circle_mc.moveTo(center_x, center_y);
        circle_mc.endFill();
        counter++;
        circle_mc.lineStyle(0, 0, 100);
        circle_mc.beginFill(colors[counter], 100);
        var l_t = (incs[counter]-incs[counter-1])/2+incs[counter-1];
        var comp = 30;
        var l_x = center_x-(comp/2)+(radius+comp) * Math.cos(l_t)
        var l_y = center_y-(comp/2)+(radius+comp/1.5) * Math.sin(l_t)
        circle_mc.createTextField("label"+counter, counter, l_x, l_y, 20, 20);
        var l_txt = circle_mc["label"+counter];
        l_txt.text = labels[counter]+"\n"+values[counter]+"("+perc[counter]+"%)";
        l_txt.multiline = true;
        l_txt.autoSize = true;
        var txt_fmt = new TextFormat("Arial", 10, colors[counter]);
        txt_fmt.align = "center";
        l_txt.setTextFormat(txt_fmt);
        circle_mc.lineTo(dx, dy);
    }
}
circle_mc.lineTo(center_x+radius, center_y);
circle_mc.lineTo(center_x, center_y);
circle_mc.endFill();

/Barklund
Avatar billede barklund Nybegynder
10. august 2003 - 21:18 #11
Og til dem, der ikke lige kan parse koden i hovedet, så ses resultatet her:

http://actionscript.dk/eksperten/piechart/piechart.html
Avatar billede -42- Nybegynder
11. august 2003 - 19:12 #12
Den er sgu nice
Avatar billede barklund Nybegynder
11. august 2003 - 20:02 #13
Arh, skulle legende ikke have en sjat for sit forsøg? ;)

Sig til, hvis du vil have nogle points, legende...

Ellers tak for point... ;)
Avatar billede -42- Nybegynder
11. august 2003 - 20:05 #14
klart! -god karma barklund, jeg tænkte også på det bagefter, men fik ikke lige gjort noget ved det.
Avatar billede baitianlong Nybegynder
11. august 2003 - 23:49 #15
Kært... Men der var kun 15... Jeg er "håbløst efter Barklund" x 10, så jeg tror hans script er en vinder ;) Jeg snupper ham næste gang........... - eller noget ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester