Flashhilfe.de - Flash Community

Kreis für Analog-Uhr [Flash 10]

 


AntwortenRegistrieren Seite1  

Tetenja#1
Benutzerbild von Tetenja
Beiträge: 69
Registriert: Apr 2013

03.04.2013, 04:34

Hallo zusammen !

Ich hab schon einige Analoguhren gemacht und möchte jetzt, das sich ein Kreis im Sekundentakt
vüllt.Ich hab auch schon bissel was gefunden, aber nicht das richtige.
Währe schön wenn mir da einer weiterhelfen könnte, hab schon bissel mit (graphics.drawEllipse) und (graphics.curveTo) rumgespielt aber ich brauch ja zu mindestens einen Halbkreis wo ich die Werte anpassen kann.
Kerstin77#2
Benutzerbild von Kerstin77
Beiträge: 1004
Registriert: Jul 2008

04.04.2013, 20:07

Hallo,

vielleicht hilft Dir dieses Skript hier schon mal weiter:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var zeichne_mc:MovieClip = new MovieClip();
this.addChild(zeichne_mc);

var endpunktingrad:Number = 0;
var winkelbogen, Px, Py:Number;
var punktabstand:Number = 5;
var radius:Number = 100;
var sWidth:uint = stage.stageWidth / 2;
var sHeight:uint = stage.stageHeight / 2;

winkelbogen = (endpunktingrad/180)*Math.PI;
Px = Math.cos(winkelbogen) * radius + sWidth;
Py = Math.sin(winkelbogen) * radius + sHeight;
zeichne_mc.graphics.moveTo(Px, Py);
zeichne_mc.graphics.lineStyle(5,0xff0000);

this.addEventListener(Event.ENTER_FRAME, zeichneKreis);

function zeichneKreis(evt:Event):void {
     winkelbogen = (endpunktingrad/180)*Math.PI;
     Px = Math.cos(winkelbogen) * radius + sWidth;
     Py = Math.sin(winkelbogen) * radius + sHeight;
     zeichne_mc.graphics.lineTo(Px, Py);
     endpunktingrad = endpunktingrad+punktabstand;
     if (endpunktingrad>360) {
        this.removeEventListener(Event.ENTER_FRAME, zeichneKreis);
     }
}


Grüße
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
Geändert von Kerstin77 am 04.04.13 um 20:08 Uhr
Kerstin77#3
Benutzerbild von Kerstin77
Beiträge: 1004
Registriert: Jul 2008

11.04.2013, 18:30

Und klappt es? Sonst nimm folgendes Skript:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import PieChart;
import flash.utils.Timer;
import flash.events.TimerEvent;

var zeichne_mc:MovieClip = new MovieClip();
this.addChild(zeichne_mc);
var jetzt:Date = new Date();
var curSek:uint = jetzt.getSeconds();
var sekTimer:Timer = new Timer(1000, 0);
sekTimer.addEventListener(TimerEvent.TIMER, setSekunden);
sekTimer.start();

function setSekunden(evt:TimerEvent):void {
     if (curSek < 60) {
        PieChart.drawPieChart(stage.stageWidth / 2, stage.stageHeight / 2, 100, 1, curSek / 60, 0x000000, 0x8daed6, zeichne_mc);
        curSek++;
     } else {
        PieChart.drawPieChart(stage.stageWidth / 2, stage.stageHeight / 2, 100, 1, 1, 0x000000, 0x8daed6, zeichne_mc);
        curSek = 1;
     }
}


Und hier die Klasse:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package {
     
     import flash.display.Graphics;
     import flash.display.MovieClip;
     
     public class PieChart {
        
        private static var endpunkt_grad:int;
        private static var winkelbogen:Number;
        private static var px:Number;
        private static var py:Number;
        private static var col:Number;
        
        public function PieChart() {
        }
        
        public static function drawPieChart(xpos:int, ypos:int, radius:uint, thickness:uint, prozent:Number, lineCol:Number, fillCol:Number, mc:MovieClip):void {
           
           mc.graphics.clear();
           mc.graphics.lineStyle(thickness, lineCol);
           mc.graphics.moveTo(xpos, ypos);
           endpunkt_grad = Math.round(prozent * 360);
           
           if (endpunkt_grad < 360) {
              
              col = 0x2dcaf1;
              mc.graphics.beginFill(fillCol);
              for (var grad:int = -90; grad < (endpunkt_grad - 90); grad++) {
                 winkelbogen = (grad / 180) * Math.PI;
                 px = Math.cos(winkelbogen) * radius + xpos;
                 py = Math.sin(winkelbogen) * radius + ypos;
                 mc.graphics.lineTo(px, py);
              }
              if (endpunkt_grad < 360) mc.graphics.lineTo(xpos, ypos);
              mc.graphics.endFill();
              
           } else {
              
              endpunkt_grad = 360;
              col = 0xff0000;
              mc.graphics.beginFill(fillCol);
              mc.graphics.drawCircle(xpos, ypos, radius);
              mc.graphics.endFill();
              
           }
           
        }
        
     }
     
}


Diese Klasse hatte ich ursprünglich mal für Kreisdiagramme entwickelt, kann man aber auch für eine Uhr nehmen. Ist schon entsprechend angepasst, heißt halt nur noch PieChart.

LG Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
Geändert von Kerstin77 am 11.04.13 um 18:31 Uhr
Tetenja#4
Benutzerbild von Tetenja
Beiträge: 69
Registriert: Apr 2013

Themenautor/in

07.05.2013, 12:41

Sorry das ich mich erst jetzt melde !
Habs ausprobiert und sieht alles super aus.
Hab erst noch ein bissel rumprobiert, weil wir immer allen mit FlashDevelop gemacht haben.
Aber ist genau das was ich wollte danke ...

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2021 Sebastian Wichmann - Flashhilfe.de