Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-07-2006, 09:25   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 71
Question Umlaufbahn | Uhr

Hallo Miteinander!

Ich habe vor, eine Uhr zu bauen (Zeit soll von der Systemuhr ausgelesen werden), bei der anstelle von Zeigern die Sekunden, Minuten und Stunden in Form von "Planeten" in elliptischen Bahnen um das Zentrum "Sonne" kreisend, die Zeit anzeigen sollen.

Hat Jemand einen Ansatz wie ich das in Fash 5 angehen könnten, bzw. noch entscheidender, wie/wo ich mich mathematisch diesbezüglich schlauer machen kann?

Vielleicht gibt es sowas ja schon?


Schönen Tag und Grüße aus Wien... Mario
damario ist offline   Mit Zitat antworten
Alt 31-07-2006, 09:35   #2 (permalink)
Mac User
 
Benutzerbild von prizma
 
Registriert seit: Jul 2006
Ort: Berlin
Beiträge: 167
Da es sich hier bei um eine eliptische Bewegung handelt, kannst du nicht einfach die _rotation funktion benutzen.
Ich würd das ganze alles eine ganze Runde animieren in Frames und mit getDate oder gettimer das ganze an die Anzahl der Frames anpassen. Bis ans Ende gedacht habe ich jedoch noch nicht, aber Ansatzweise dürfte das so hinkommen.
__________________
Schöne Grüße, best regards
prizma
prizma ist offline   Mit Zitat antworten
Alt 31-07-2006, 10:06   #3 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
Man könnte das ganze auch Kreisrund in einem MC anlegen und dann verzerren ... das müsste auch hinhauen um eine eliptische bahn zu bekommen.
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt ist offline   Mit Zitat antworten
Alt 01-08-2006, 07:52   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 71
Zitat:
Zitat von prizma
Da es sich hier bei um eine eliptische Bewegung handelt, kannst du nicht einfach die _rotation funktion benutzen.
Ich würd das ganze alles eine ganze Runde animieren in Frames und mit getDate oder gettimer das ganze an die Anzahl der Frames anpassen. Bis ans Ende gedacht habe ich jedoch noch nicht, aber Ansatzweise dürfte das so hinkommen.
Danke, das klingt vielversprechend!
Das heißt, am Beispiel des "Sekundenplaneten" wandert mein "Zeiger" innerhalb von 60 Frames entlang des Ellipsenpfades. Wie kann ich jetzt aber die Systemuhr auslesen und den Sekundenwert der Position des "Sekundenplaneten" bzw. dem entsprechenden Frame zuweisen?
Wäre es mit Flash5 auch möglich, die Ellipsenbahn per Actionscript anstelle von eines Tweenings entlang eines Pfades zu realisieren?

Gruß... Mario
damario ist offline   Mit Zitat antworten
Alt 01-08-2006, 12:46   #5 (permalink)
Flash Gordon
 
Benutzerbild von McUsher
 
Registriert seit: Jul 2006
Beiträge: 190
Natürlich geht das mit _rotation, ich habe hier leider 'nur' Flash8, und kann somit nicht als Flash 5 speichern, ich versuchs mal zu erklären:
PHP-Code:
this.onEnterFrame = function(){
    var 
sek = new Date().getSeconds();
    
holder.planet._rotation sek*6;

So, der trick ist, dass der MovieClip planet, eine Kreisbahn mit nem Planeten ist.
(Zentriert wohlgemerkt).
Nun kann man den "holder" MC vertikal stauchen und es sieht aus, als würde der planet sich eliptisch bewegen...


Klar was ich meine ?

[edit]
Ahh, ich bin doof...
Das geht natürlich nur, wenn man Terry Pratchet fan is... *gnarf*

Geändert von McUsher (01-08-2006 um 12:48 Uhr)
McUsher ist offline   Mit Zitat antworten
Alt 01-08-2006, 13:16   #6 (permalink)
Flash Gordon
 
Benutzerbild von McUsher
 
Registriert seit: Jul 2006
Beiträge: 190
Zur Strafe ob meiner blöden Antwort,
hab ich mal die Berechnungsvariante geschrieben...
(ich hab aber keinen Plan, was davon in flash5 geht, und was nicht)

PHP-Code:
var centerX 110;
var 
centerY 110;
var 
radiusX 100;
var 
radiusY 50;

this.lineStyle(1,0,255);
var 
first true;
this.onEnterFrame = function()
{
    var 
seconds = new Date().getSeconds() + new Date().getMilliseconds()/1000;

    var 
angle_in_radians = (seconds*6) * Math.PI /180;
    var 
centerX+radiusX Math.sin(angle_in_radians);
    var 
centerY-radiusY Math.cos(angle_in_radians);
    if(
first){
        
this.moveTox);
        
first false;
    }
    
this.lineTox);
    
planet._x centerX+x;
    
planet._y centerY+y;

Falls der Planet Sekundenweise springen soll, lässte natürlich einfach das +milliseconds wech bei der Sekundenauslesung..

Falls du ungerne scriptest, mach lieber, was prizma vorschlägt
Vor allem, da ich den Code nicht für Flash5 zum Laufen bringe.. es ist einfach zu lange her, dass ich das uralt zeugs benutzen musste, sorry ..

Geändert von McUsher (01-08-2006 um 13:22 Uhr)
McUsher ist offline   Mit Zitat antworten
Alt 01-08-2006, 13:52   #7 (permalink)
nobody is perfect
 
Benutzerbild von Decrone
 
Registriert seit: Apr 2002
Ort: Bremen
Beiträge: 3.049
in Flash 5 ist auf jedenfall die Zeichen-API und das onEnterFrame event nicht vorhanden!

Gruss Dec
__________________
FF Unterstützen! Erste Hilfe! häufig gestellten Fragen
...................... ............... ................................
Decrone ist offline   Mit Zitat antworten
Alt 01-08-2006, 14:23   #8 (permalink)
Flash Gordon
 
Benutzerbild von McUsher
 
Registriert seit: Jul 2006
Beiträge: 190
Ohhh, achso, das ding hätte natürlich die Elipse gezeichnet....
Und wie macht man das ohne onEnterFrame...? Ich bin grad verwirrt und vergeßlich...
McUsher ist offline   Mit Zitat antworten
Alt 01-08-2006, 14:40   #9 (permalink)
nobody is perfect
 
Benutzerbild von Decrone
 
Registriert seit: Apr 2002
Ort: Bremen
Beiträge: 3.049
entweder direkt auf das Objekt-event
PHP-Code:
onClipEvent (enterFrame) {
    
//Code

oder über ein MC mit Framewechsel (Frame1 & 2 loopen lassen) jaja die guten alten Zeiten

Gruss Dec
__________________
FF Unterstützen! Erste Hilfe! häufig gestellten Fragen
...................... ............... ................................

Geändert von Decrone (01-08-2006 um 14:41 Uhr)
Decrone ist offline   Mit Zitat antworten
Alt 01-08-2006, 14:45   #10 (permalink)
Flash Gordon
 
Benutzerbild von McUsher
 
Registriert seit: Jul 2006
Beiträge: 190
*Hand vorn Kopp schlag*

Naja, ich hoffe dir, mein Beitrag hilft dir trotzdem vielleicht weiter
McUsher ist offline   Mit Zitat antworten
Alt 01-08-2006, 17:16   #11 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 71
Danke in die Runde!

Ich werd' mich mal darin versuchen und gegebenenfalls erneut um Euer "Wissen wie" bitten. Ich möchte es jedenfalls in Flash5 lösen - mir geht es dabei um die PlugIn Verbreitung - und warum den Flashplayer 6 oder höher voraussetzen, wenn es mit älteren Versionen auch realisierbar ist...


Grüße... Mario
damario ist offline   Mit Zitat antworten
Alt 01-08-2006, 17:24   #12 (permalink)
Mac User
 
Benutzerbild von prizma
 
Registriert seit: Jul 2006
Ort: Berlin
Beiträge: 167
Denke das dürfte auch ein klein wenig abgekürzter funktionieren:

radiusX /radiusY vorher definieren (in elliptische Form)

PHP-Code:

centerX Math.cos(angle) * radiusX;
centerY Math.sin(angle) * radiusY;
//angle+=speed;
//falls unabhängig von der Zeit 
__________________
Schöne Grüße, best regards
prizma
prizma ist offline   Mit Zitat antworten
Alt 01-08-2006, 17:30   #13 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 71
Ich glaube das Tweening in 60 Frames entlang eines Ellipsenpfades ist die einfachste Lösung. Aber wie kann ich den Sekundenwert der Systemuhr der dazugehörigen Position im Tweening (z.B: 57sec = Frame 57) zuweisen?


Mario : )
damario ist offline   Mit Zitat antworten
Alt 01-08-2006, 17:38   #14 (permalink)
nobody is perfect
 
Benutzerbild von Decrone
 
Registriert seit: Apr 2002
Ort: Bremen
Beiträge: 3.049
PHP-Code:
//Frame1 Hzl
function OrbitalTime (){
    var 
zeit = new Date();
    var 
sekunde zeit.getSeconds();
    
this.planet.gotoAndStop(sekunde);
}


//und das auf ein MC-Objekt

onClipEvent (enterFrame) {
    
_parent.OrbitalTime ()

Gruss Dec
__________________
FF Unterstützen! Erste Hilfe! häufig gestellten Fragen
...................... ............... ................................
Decrone ist offline   Mit Zitat antworten
Alt 01-08-2006, 17:49   #15 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 71
Zitat:
Zitat von Decrone
PHP-Code:
//Frame1 Hzl
function OrbitalTime (){
    var 
zeit = new Date();
    var 
sekunde zeit.getSeconds();
    
this.planet.gotoAndStop(sekunde);
}


//und das auf ein MC-Objekt

onClipEvent (enterFrame) {
    
_parent.OrbitalTime ()

Gruss Dec

Wuuw, so kurz ist das Script?
Das heißt, ich lege auf der HZL drei Funktionsscripten (für sek, min, und h) an und rufe die Funktionen auf den jeweiligen MCs wieder ab und das war es?


Vielen lieben Dank!

Nochwas:
Damit die Bewegung der "Planeten"-Zeiger flüssig aussieht - ist es ratsam das Tweening auf 120 Frames zu erweitern und mit der Framerate nach oben zu gehen?
damario 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



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele