Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-10-2003, 11:01   #1 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
penner's easing - problem

Also ich möchte im Prinzip das sich mein MC bei MouseDown von A nach B bewegt und bei MouseUp von B nach A, irgendwie finde ich mein problem nicht, hab das script aufs wesentliche reduziert:

ActionScript:
  1. Math.easeOutQuad = function(t, b, c, d) {
  2.     return -c*(t /= d)*(t-2)+b;
  3. };
  4.  
  5.  
  6. i = mc;
  7. i.startx = i._x;
  8. i.tarx = i.startx + 300;
  9.  
  10.  
  11. function ausklapp () {
  12.     i.starttime = 0;
  13.     i.onEnterFrame = function () {
  14.         this._x = Math.easeOutQuad(this.starttime++,this.startx,this.tarx,150);
  15.         if (this.starttime == 150) {
  16.             this.starttime = 0;
  17.             delete this.onEnterFrame;
  18.         }
  19.     }
  20. }
  21.  
  22.  
  23.    
  24. function einklapp () {
  25.     i.starttime = 0;
  26.     i.onEnterFrame = function () {
  27.         this._x = Math.easeOutQuad(this.starttime++,this.tarx,this.startx,150);
  28.         if (this.starttime == 150) {
  29.             this.starttime = 0;
  30.             delete this.onEnterFrame;
  31.         }
  32.     }
  33. }
  34.  
  35. onMouseUp = einklapp;
  36. onMouseDown = ausklapp;
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 28-10-2003, 11:36   #2 (permalink)
on fire
 
Benutzerbild von H.Storm
 
Registriert seit: Jan 2003
Ort: Ljubljana
Beiträge: 613
Sowas?

ActionScript:
  1. i = mc;
  2.  
  3. //---------------------------------------
  4.  
  5. function ausklapp () {
  6.     i.targetx = 300;
  7. }
  8.  
  9. function einklapp () {
  10.     i.targetx = 0;
  11. }
  12.  
  13. //---------------------------------------
  14.  
  15. i.onLoad = function () {
  16.     this._x = 300;
  17.     this._y = 0;
  18.     this.targetx = 0;
  19.     this.speed = 2;
  20. }
  21.  
  22. i.onEnterFrame = function () {
  23.     this._x+=(this.targetx-this._x)/this.speed;
  24. }
  25.  
  26. //---------------------------------------
  27.  
  28. onMouseUp = einklapp;
  29. onMouseDown = ausklapp;

Das klappt...

Edit: Also je höher speed, desto smoother das ganze. Da hab' ich den Variablennamen irgendwie shice gewählt

Geändert von H.Storm (28-10-2003 um 11:42 Uhr)
H.Storm ist offline   Mit Zitat antworten
Alt 28-10-2003, 12:07   #3 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
Die Möglichkeit gibts wohl, kenne ich auch, aber ich möchte die Easing Sachen anwenden und verstehe nicht warum das nicht funktioniert.

Bei den Easing Sachen gibts halt noch viele andere Bewegungsabläufe.

Weiß nicht ob du die kennst??

http://www.robertpenner.com/easing/

kannst dir da ja mal die Demo angucken.
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 28-10-2003, 12:57   #4 (permalink)
on fire
 
Benutzerbild von H.Storm
 
Registriert seit: Jan 2003
Ort: Ljubljana
Beiträge: 613
Das ist es noch nicht ganz, aber ich beweg' mich in die richtige Richtung
ActionScript:
  1. Math.easeInQuad = function (t, b, c, d) {
  2.     return c*(t/=d)*t + b;
  3. };
  4.  
  5. onEnterFrame = function () {
  6.     Tstart++;
  7. }
  8.  
  9. i = mc;
  10.  
  11. //----------------------------------------------------------------------------------
  12.  
  13. function ausklapp () {
  14.     Tstart = 0;
  15.     Xstart = i._x;
  16.     ausklapp = true;
  17.     einklapp = false;
  18. }
  19.  
  20. function einklapp () {
  21.     Tstart = 0;
  22.     Xstart = i._x;
  23.     einklapp = true;
  24.     ausklapp = false;
  25. }
  26.  
  27. i.onEnterFrame = function () {
  28.     if (ausklapp == true) {
  29.         this._x = Math.easeInQuad(Tstart, Xstart, 300, 150);
  30.         if (Tstart == 150) {
  31.             ausklapp = false;
  32.         }
  33.     }
  34.     if (einklapp == true) {
  35.         this._x = Math.easeInQuad(Tstart, Xstart, -300, 150);
  36.         if (Tstart == 150) {
  37.             einklapp = false;
  38.         }
  39.     }
  40. }
  41.  
  42. //----------------------------------------------------------------------------------
  43.  
  44. onMouseUp = einklapp;
  45. onMouseDown = ausklapp;

Edit: In deisem Fall bewegt sich der MC halt immer um 300, d.h. wenn du in der Mitte der Bewegung die Maus loslässt bewegt er sich um 300 zurück und wäre dann bei -150. Also musst du eigentlich nur noch anstatt einem festen Wert für "c" eine Differenz zu einem fixen Start-/Endpunkt angeben. Zumindest glaube ich das

Geändert von H.Storm (28-10-2003 um 13:01 Uhr)
H.Storm ist offline   Mit Zitat antworten
Alt 28-10-2003, 13:25   #5 (permalink)
on fire
 
Benutzerbild von H.Storm
 
Registriert seit: Jan 2003
Ort: Ljubljana
Beiträge: 613
Ihh, Doppelposter!

Hier läuft dein MC von der oberen, linken Ecke auf die Maus zu, solange du die Taste drückst - danach zurück.

ActionScript:
  1. //Easing-Funktion von Robert Penner
  2. Math.easeInQuad = function (t, b, c, d) {
  3.     return c*(t/=d)*t + b;
  4. };
  5.  
  6. onLoad = function () {
  7.     //Als fixen Startpunkt hab' ich einfach mal die obere ecke genommen.
  8.     Xstartpunkt = i._x = i._width/2;
  9.     ystartpunkt = i._y = i._height/2;
  10.     //SPEEEED
  11.     speed = 150;
  12. }
  13.  
  14. onEnterFrame = function () {
  15.     Tstart++;
  16. }
  17.  
  18. i = mc;
  19.  
  20. //----------------------------------------------------------------------------------
  21.  
  22. function ausklapp () {
  23.     Tstart = 0;
  24.     Xstart = i._x;
  25.     Ystart = i._y;
  26.     Xendpunkt = _xmouse - i._x;
  27.     Yendpunkt = _ymouse - i._y;
  28.     ausklapp = true;
  29.     einklapp = false;
  30. }
  31.  
  32. function einklapp () {
  33.     Tstart = 0;
  34.     Xstart = i._x;
  35.     Ystart = i._y;
  36.     Xendpunkt = Xstartpunkt - i._x;
  37.     Yendpunkt = Ystartpunkt - i._y;
  38.     einklapp = true;
  39.     ausklapp = false;
  40. }
  41.  
  42. //----------------------------------------------------------------------------------
  43.  
  44. i.onEnterFrame = function () {
  45.     if (ausklapp == true) {
  46.         this._x = Math.easeInQuad(Tstart, Xstart, Xendpunkt, speed);
  47.         this._y = Math.easeInQuad(Tstart, Ystart, Yendpunkt, speed);
  48.         if (Tstart == 150) {
  49.             ausklapp = false;
  50.         }
  51.     }
  52.     if (einklapp == true) {
  53.         this._x = Math.easeInQuad(Tstart, Xstart, Xendpunkt, speed);
  54.         this._y = Math.easeInQuad(Tstart, Ystart, yendpunkt, speed);
  55.         if (Tstart == 150) {
  56.             einklapp = false;
  57.         }
  58.     }
  59. }
  60.  
  61. //----------------------------------------------------------------------------------
  62.  
  63. onMouseUp = einklapp;
  64. onMouseDown = ausklapp;

Frag mich nicht, ob das auch mit anderen Funktionen geht. Bin bei der Arbeit und muss fleißig sein

Geändert von H.Storm (28-10-2003 um 13:27 Uhr)
H.Storm ist offline   Mit Zitat antworten
Alt 28-10-2003, 13:35   #6 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
vielen dank erstmal, aber warum funktioniert meine version nicht, ich versteh es nicht;

ActionScript:
  1. Math.easeOutQuad = function(t, b, c, d) {
  2.         return -c*(t /= d)*(t-2)+b;
  3. };
  4.  
  5. //hier gebe ich sowohl startpunkt als auch zielpunkt ein
  6. i = mc;
  7. i.startx = i._x;
  8. i.tarx = i.startx + 300;
  9.  
  10. //diese Funktion funktioniert einwandfrei
  11. function ausklapp () {
  12.         i.starttime = 0;
  13.         i.onEnterFrame = function () {
  14.                 this._x = Math.easeOutQuad(this.starttime++,this.startx,this.tarx,150);
  15.                 if (this.starttime == 150) {
  16.                         this.starttime = 0;
  17.                         delete this.onEnterFrame;
  18.                 }
  19.         }
  20. }
  21.  
  22.  
  23. //in dieser vertausche ich lediglich startx und tarx, also müsste es doch genau umgekehrt laufen, er müsste auf _x = 300 springen und langsam auf 0 zulaufen.
  24.  
  25. function einklapp () {
  26.         i.starttime = 0;
  27.         i.onEnterFrame = function () {
  28.                 this._x = Math.easeOutQuad(this.starttime++,this.tarx,this.startx,150);
  29.                 if (this.starttime == 150) {
  30.                         this.starttime = 0;
  31.                         delete this.onEnterFrame;
  32.                 }
  33.         }
  34. }
  35.  
  36. onMouseUp = einklapp;
  37. onMouseDown = ausklapp;

P.S. ich gewöhne mir schon an hinter normale Sätze Semikolons zusetzen;
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???

Geändert von K-Grabowski (28-10-2003 um 13:36 Uhr)
K-Grabowski ist offline   Mit Zitat antworten
Alt 28-10-2003, 14:17   #7 (permalink)
on fire
 
Benutzerbild von H.Storm
 
Registriert seit: Jan 2003
Ort: Ljubljana
Beiträge: 613
Erstmal ein "stop();" unten rein. Sonst funzt das ja schonmal gar nicht. Schau ich mir gleich mal an...

Edit: Wohl doch nicht - hab' grad Arbeit bekommen *schnüff*

Geändert von H.Storm (28-10-2003 um 14:31 Uhr)
H.Storm ist offline   Mit Zitat antworten
Alt 28-10-2003, 14:40   #8 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
wenn man eh nur einen Frame hat schon
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 29-10-2003, 15:25   #9 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
habs jetzt gecheckt c ist ja nicht der absolute endwert sondern die relative verschiebnung, jetzt ist mir das klar.

Aber großen Dank für deine Mühe H.Storm
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 29-10-2003, 16:55   #10 (permalink)
on fire
 
Benutzerbild von H.Storm
 
Registriert seit: Jan 2003
Ort: Ljubljana
Beiträge: 613
Was heißt denn aber - meins läuft auch
H.Storm 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 00:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele