Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-06-2005, 15:03   #1 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
nextFrame, prevFrame und kürzester Weg?

Hallo liebe Flasher,

ich habe folgende Frage: Ich habe Menüpunkte entlang einer Kreisbahn angeordnet und auf der Kreisbahn bewegt sich ein kleiner Punkt zum jeweiligen Menüpunkt. Dies klappt über next Frame/ prevFrame ganz gut. Allerdings nur in einem gewissen Rahmen.
Beispiel:

1
4 2
3

(Anordnung als Kreis)

sind auf der Timeline angeordnet, clicke ich von Punkt 3 nach Punkt 4 sucht er sich den kürzesten weg, von Punkt 4 nach punkt 1 fährt er allerdings die ganze Strecke wieder Rückwärts über Punkt 3 und 2, statt auf dem Kreis vorwärts zu Punkt 1 zu fahren. Hat einer eine Idee wie ich ihm beibringen kann hier die kürzeste Strecke zu wählen?

Vielen Dank!

Gruß Jan
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind ist offline   Mit Zitat antworten
Alt 26-06-2005, 17:09   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ActionScript:
  1. function fGoTo(vNeu) {
  2.     var vDreh = vNeu-gAltStop;
  3.     gAltStop = vNeu;
  4.     if (vDreh>gAnzahlStops/2) {
  5.         vDreh -= gAnzahlStops;
  6.     } else if (vDreh<-gAnzahlStops/2) {
  7.         vDreh += gAnzahlStops;
  8.     }
  9.     return vDreh;
  10. }
  11. //
  12. // test
  13. function fInfo(vNeu) {
  14.     var vInfo = "von "+gAltStop+" zu "+vNeu+" drehe ";
  15.     //
  16.     var vDreh = fGoTo(vNeu);
  17.     //
  18.     if (vDreh<0) {
  19.         vInfo += "links rum";
  20.     } else if (vDreh>0) {
  21.         vInfo += "rechts rum";
  22.     } else {
  23.         vInfo += "garnicht";
  24.     }
  25.     trace(vInfo);
  26. }
  27. //
  28. var gStopBei = [0, 1, 2, 3, 4, 5, 6, 7];
  29. var gAnzahlStops = gStopBei.length;
  30. var gAltStop = 2;
  31. fInfo(4);
  32. fInfo(1);
  33. fInfo(6);
  34. fInfo(1);
  35. fInfo(1);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 26-06-2005, 17:59   #3 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
Hallo,

erstmal viellen danke, ich werde mal versuchen das zu verstehen

Dir einen schönen Sonntag!

lg Jan
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind ist offline   Mit Zitat antworten
Alt 26-06-2005, 18:04   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..ich werde mal versuchen das zu verstehen.."
fGoTo: was mehr als die hälfte ist == andersrum

der rest ist nur zum testen
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 04-07-2005, 15:18   #5 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
Kannst Du mir vielleicht das Beispiel mal als fla hochladen, irgendwie verstehe ich es nicht so ganz. Sorry, muss die Hitze sein


Wäre super nett von Dir!

Merci Jan
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind ist offline   Mit Zitat antworten
Alt 04-07-2005, 15:25   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
vorschlag: du lädst was hoch und ich gucke ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 05-07-2005, 09:15   #7 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
Hallo,
hier mal mein Beispiel, ist aber ganz anders gelöst als Du das jetzt beschrieben hast. Würde Deine Abfrage hier gerne einbauen, wenn das geht.

nochmals vielen Dank für Deine Hilfe!

Gruß Jan
Angehängte Dateien
Dateityp: zip rennstrecke_test.zip (9,5 KB, 2x aufgerufen)
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind ist offline   Mit Zitat antworten
Alt 05-07-2005, 16:15   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..ist aber ganz anders gelöst als Du das jetzt.."
deshalb sollst du ja dein beispiel hochladen.
Angehängte Dateien
Dateityp: zip rennstrecke.zip (20,5 KB, 7x aufgerufen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 05-07-2005, 22:12   #9 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
Hallo,

erstmal vielen lieben Dank! Leider bin ich nicht so Fit in Flash, will aber auch immer gerne dazu lernen, kannst Du mir vielleicht zwei Dinge näher erläutern?

_root.richtung = (((Math.abs(f)>h) ? f=h-f : f)>0) ? 'next' : 'prev';

//Was genau berechnest Du hier?

(c == 1) ? this.gotoAndStop(t) : this.prevFrame();

//Ist doch einfach nur die Kurzform einer If... else Anweisung, oder?

vielen Dank noch mal für alles

Gruß Jan
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!

Geändert von Kind (06-07-2005 um 09:08 Uhr)
Kind ist offline   Mit Zitat antworten
Alt 06-07-2005, 10:04   #10 (permalink)
Co&Bold
 
Benutzerbild von Cysign
 
Registriert seit: Nov 2004
Ort: Troisdorf (bei Köln)
Beiträge: 170
Zitat:
Zitat von Kind
_root.richtung = (((Math.abs(f)>h) ? f=h-f : f)>0) ? 'next' : 'prev';
richtung = ((wenn der wert /*math.abs*/ von f größer als h ist, dann ist f = h minus f) wenn das ganze größer als 0 ist, dann 'next' sonst 'vorher'


Zitat:
Zitat von Kind
(c == 1) ? this.gotoAndStop(t) : this.prevFrame();
//Ist doch einfach nur die Kurzform einer If... else Anweisung, oder?
jepp:
Code:
if (666>0) {dann...;}
sonst {das...andere;}
ist das selbe wie:
Code:
(666>0) ? dann... : das...andere
__________________
Friede!
Cysign ist offline   Mit Zitat antworten
Alt 06-07-2005, 16:16   #11 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
na, jetzt alles verstanden?

siehe #5
"..irgendwie verstehe ich es nicht so ganz.."
und das bezog sich auf den einfachen script.
bzw. auf mein:
"..was mehr als die hälfte ist == andersrum.."

und was anderes mache ich jetzt auch nicht.
freu dich doch das es geht ;-)))
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 06-07-2005, 22:11   #12 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
Klar freu ich mich, aber wenn ich nur ein fertiges Skript will, hätte ich auch zu Flashkit gehen können, wills ja auch verstehen und das habe ich jetzt auch

Vielen lieben Dank nochmal an Euch beide!

Jan
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind ist offline   Mit Zitat antworten
Alt 06-07-2005, 23:43   #13 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
Doch noch eine letzte Frage, sorry. Hab versucht es selber zu lösen aber nicht geschafft. Drückt man einen Punkt mehrfach springt er immer einen Frame vor oder zurück. Er landet generell immer einen Frame davor oder dahinter. Nehme mal an das ist ein rundungsfehler oder so, aber ich habs einfach nicht gefunden. Bitte nochmal um Hilfe


Vielen Dank
Jan
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind ist offline   Mit Zitat antworten
Alt 07-07-2005, 01:02   #14 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ActionScript:
  1. function fPressBtn(pos) {
  2.     _root.zielframe = pos;
  3.     var h = _root.auto_mc._totalframes/2;
  4.     var f = pos-_root.auto_mc._currentframe;
  5.     _root.richtung = (((Math.abs(f)>h) ? f=h-f : f)>0) ? 'next' : 'prev';
  6.     _root.auto_mc.onEnterFrame = fFahrLos;
  7. }
  8. fPressBtn(1);
  9. //
  10. function fFahrLos() {
  11.     var c = this._currentframe;
  12.     var t = this._totalframes;
  13.     if (c == _root.zielframe) {
  14.         delete this.onEnterFrame;
  15.         return; // <------ hab den da vergessen!
  16.     }
  17.     if (_root.richtung == 'prev') {
  18.         (c == 1) ? this.gotoAndStop(t) : this.prevFrame();
  19.     } else {
  20.         (c == t) ? this.gotoAndStop(1) : this.nextFrame();
  21.     }
  22. }
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 07-07-2005, 10:31   #15 (permalink)
That's bat country!
 
Benutzerbild von Kind
 
Registriert seit: May 2003
Ort: Berlin
Beiträge: 198
Cool, vielen Dank! Kannst Du mir abschließend noch erklären, was Du mit dem return zurückgibst?


Merci Jan
__________________
"""""""""""""""""""""""""""""""""""""""
Hier können wir nicht halten, dass ist Fledermausland!
Kind 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 01:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele