Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-03-2004, 11:34   #1 (permalink)
Infected
 
Registriert seit: Jul 2002
Ort: Dresden
Beiträge: 36
Verfluchte Trigonometrie

Hallo!

Die Abiturzeit ist ja nun schon ein paar Tage her. Dementsdprechend schwer tue ich mich mit Trigonometrie.
Vielleicht kann mir jemand auf die Sprünge helfen. Folgende Ausgangslage:


In einem Movieclipliegt eine Sonne, mit folgendem Code:

ActionScript:
  1. _parent._y = 138 - Math.sqrt((_parent._x*_parent._x)+(144*144)) + 144;
und gotoAndPlay(1) im darauffolgenden Frame zwecks Schleife.
Der Movieclip selbst befindet sich nun wieder in einer Schaltfläche, die am Rand eines Kreise positioniert ist.
Beim draggen soll sich sich die Sonne nun am Rand des Kreises ausrichten.
Wenn man bedenkt, dass laut meinen Erinnerungen folgende Formel existiert:

a²+b²=c²

sollte es einfache Angegelgenhit werden,
c² ist in dem Fall der Radius des Kreises 144 ins Quadrat
und b² ist der Weg der Sonne vom Kreismittelpunkt weg(positioniert bei x=0.

138 ist die Ausgangs-y-koordinate.
Okay ist vielleicht ein bisschen umständlich ausgedrückt.
Nun das Problem:

Funktionieren tut es, nur macht die Sonne nach ungefähr der Hälfte des Weges einen größeren Bogen als der Kreis groß ist.
Woran liegts? Ach noch was, die Sonne soll sich nur im Halbkreis darum bewegen, also es ist nicht nötig, dass sie sich nach erreichen des äussersten Punktes wieder nach innen bewegt.
bigbeee ist offline   Mit Zitat antworten
Alt 27-03-2004, 14:11   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
mach mal ne kleine Zeichnung, so dass man sieht, wie der Halbkreis ausgerichtet sein soll (von 12 Uhr bis 6 Uhr, oder von 3 Uhr bis 9 Uhr ...)

Mit Trigonometrie hat es bisher auf jeden Fall nichts zu tun.
Janoscharlipp ist offline   Mit Zitat antworten
Alt 28-03-2004, 11:50   #3 (permalink)
Infected
 
Registriert seit: Jul 2002
Ort: Dresden
Beiträge: 36
Okay, war vielleicht ein bisschen unglücklich ausgedrückt.
Hier ein Bild zur Verdeutlichung wohin es gehen soll:

http://projects.visuales.de/sonnenkreis.jpg

Vielleicht fällt dir ja dazu etwas ein.
bigbeee ist offline   Mit Zitat antworten
Alt 28-03-2004, 12:03   #4 (permalink)
Infected
 
Registriert seit: Jul 2002
Ort: Dresden
Beiträge: 36
Es soll quasi von 3-9 gehen.
Bisher hat es nichts mit Trigonometrie zu tun aber ich spüre, dass sie die Lösung sein wird, nur fehlt mir der richtige Ansatz.
Ich dachte mir das folgendermasen, der Benutzer dragt die Sonne nach rechts bzw. es wird nur die horizontale Änderung der Sonne analyseirt und darufhin wird die korrekte y-koordinate der Sonne per Rechnung gesetzt.
bigbeee ist offline   Mit Zitat antworten
Alt 28-03-2004, 12:12   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
hmm, 3 bis 9, also unten? Oder je nachdem, wie hoch die Maus ist?
Ich bastel mal schnell was, um 13:30 melde ich mich nochmal.
Janoscharlipp ist offline   Mit Zitat antworten
Alt 28-03-2004, 12:29   #6 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
so da bin ich.
im Anhang das Beispiel, hier nochmal der Code.
(ließe sich noch verbessern, indem du das onEnterFrame immer beim MouseDown erstellst, beim MouseUp wieder löschst, aber das ist ja klar...)

ActionScript:
  1. _root.onMouseDown = function()
  2. {
  3.     this.moveIt = true;
  4. }
  5. _root.onMouseUp = function()
  6. {
  7.     this.moveIt = false;
  8. }
  9. _root.onEnterFrame = function()
  10. {
  11.     if(this.moveIt)
  12.     {
  13.         var radius = _root.centre._width / 2;
  14.        
  15.         _root.sun._x = _root._xmouse;
  16.        
  17.         if((_root._xmouse > (_root.centre._x - _root.centre._width / 2))
  18.         && (_root._xmouse < (_root.centre._x + _root.centre._width / 2)))
  19.         {
  20.             var relativeY = Math.sqrt(radius * radius - (_root._xmouse - _root.centre._x) * (_root._xmouse - _root.centre._x));
  21.            
  22.             if(_root._ymouse > _root.centre._y)
  23.             {
  24.                 _root.sun._y = _root.centre._y + relativeY;
  25.             }
  26.             else
  27.             {
  28.                 _root.sun._y = _root.centre._y - relativeY;
  29.             }
  30.         }
  31.         else
  32.         {
  33.             _root.sun._y = _root.centre._y;
  34.         }
  35.     }
  36. }
Angehängte Dateien
Dateityp: zip circlefollow.zip (2,5 KB, 16x aufgerufen)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 28-03-2004, 12:29   #7 (permalink)
Infected
 
Registriert seit: Jul 2002
Ort: Dresden
Beiträge: 36
Das ist nett von dir.
bigbeee ist offline   Mit Zitat antworten
Alt 28-03-2004, 12:30   #8 (permalink)
Infected
 
Registriert seit: Jul 2002
Ort: Dresden
Beiträge: 36
Oh cool, das probier ich gleichmal.
bigbeee ist offline   Mit Zitat antworten
Alt 28-03-2004, 12:43   #9 (permalink)
Infected
 
Registriert seit: Jul 2002
Ort: Dresden
Beiträge: 36
Funktioniert ganz wunderbar. Dankeschön, dagegen war mein Ansatz wohl etwas zu naiv.
bigbeee ist offline   Mit Zitat antworten
Alt 28-03-2004, 12:45   #10 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
viel anderes hast du ja auch nicht gemacht.
das entscheidende Stück ist ja immernoch
ActionScript:
  1. var relativeY = Math.sqrt(radius * radius - (_root._xmouse - _root.centre._x) * (_root._xmouse - _root.centre._x));
Janoscharlipp 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 14:21 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele