Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-12-2004, 13:01   #1 (permalink)
see
Neuer User
 
Registriert seit: May 2004
Beiträge: 44
Gravitation

Hallo,

als absoluter Anfänger in Sachen Actionscript brauch ich jemanden der mir den unten stehenden Code "übersetzt". Ich versteh genau bei deisem beispiel einfach nicht woher der Wert this.yTempo kommt. Ist der Bereits deffiniert? und auch die If Abfrage läßt Fragen offen. Wenn jemand Zeit findet und ein paar Sätze dazu schreibt, würde ich mich sehr freuen !

ActionScript:
  1. // Methode definieren (für alle Filmsequenzen)
  2. Movieclip.prototype.setGravitation = function(pGravitation, pBoden) {
  3.     this.yTempo += pGravitation;
  4.     this._y += this.yTempo;
  5.     if (this._y >= pBoden) {
  6.         this._y = pBoden;
  7.         this.yTempo *= -1;
  8.     }
  9. };

Geändert von see (03-12-2004 um 10:18 Uhr)
see ist offline   Mit Zitat antworten
Alt 02-12-2004, 17:21   #2 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
hi.

«this.yTempo» sollte tatsächlich schon irgendwo definiert sein.
such mal das restliche script durch. ansonst kannst du ja mal
ein trace(this.yTempo) einfügen und dann den film testen. im
ausgabefenster erscheinen dann die aktuellen werte für «this.yTempo»

>und auch die If Abfrage läßt Fragen offen.

wenn ich das richtig sehe, sorgt die if-abfrage dafür, daß das
objekt welches mit dieser methode gesteuert wird, vom «boden»
abprallt.

if (this._y >= pBoden) {
this._y = pBoden;
this.yTempo *= -1;
}

wenn der y-wert größer als pBoden ist (flash-y-koordinaten werden
nach unten größer, da der ursprung oben links liegt) wird er gleich
dem wert des bodens gesetzt (sprich die untere abprallkante) und
das tempo wird umgekehrt (* -1), damit sich das objekt danach
in die gegenrichtung (nach oben) bewegt.

hoffe, das war richtig :-)

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 03-12-2004, 09:00   #3 (permalink)
see
Neuer User
 
Registriert seit: May 2004
Beiträge: 44
Thumbs up

Vielen vielen Dank!

Ich werd mir das Script nochmal durchlesen.
see ist offline   Mit Zitat antworten
Alt 03-12-2004, 09:08   #4 (permalink)
see
Neuer User
 
Registriert seit: May 2004
Beiträge: 44
also das ist das gesamte Script:

ActionScript:
  1. // Methode definieren (für alle Filmsequenzen)
  2. Movieclip.prototype.setGravitation = function(pGravitation, pBoden) {
  3.     this.yTempo += pGravitation;
  4.     this._y += this.yTempo;
  5.     if (this._y >= pBoden) {
  6.         this._y = pBoden;
  7.         this.yTempo *= -1;
  8.     }
  9. };
  10.  
  11. // Filmsequenz Zuweisungen
  12. mcBall1.onEnterFrame = function() {
  13.     this.setGravitation(1, 284);
  14. };
  15.  
  16. mcBall2.onEnterFrame = function() {
  17.     this.setGravitation(1, 143);
  18. };
  19.  
  20. mcBall3.onEnterFrame = function() {
  21.     this.setGravitation(1, 284);
  22. };
  23.  
  24. mcBall4.onEnterFrame = function() {
  25.     this.setGravitation(1, 143);
  26. };
  27.  
  28. mcBall5.onEnterFrame = function() {
  29.     this.setGravitation(1, 284);
  30. };
  31.  
  32. mcBall6.onEnterFrame = function() {
  33.     this.setGravitation(1, 143);
  34. };


die einzelnen Movieclips (mcBall*) haben noch ein Drag-Verhalten.

ActionScript:
  1. on (press) {
  2.     startDrag(this);
  3. }
  4. on (release, releaseOutside) {
  5.     stopDrag();
  6. }


Gut man könnt es einfach beim nächsten Mal über Strg C Strg V einfügen. Ich würde es aber gerne auch verstehen. Und wo der Tempo Wert herkommt ist mir einfach unklar.

Geändert von see (03-12-2004 um 10:18 Uhr)
see ist offline   Mit Zitat antworten
Alt 03-12-2004, 09:28   #5 (permalink)
Schokolaaaadeeeeee
 
Registriert seit: Apr 2004
Ort: Saarbrücken
Beiträge: 173
Hi,

also ich denke das this.yTempo sdurch die Gravitation definiert ist:

ActionScript:
  1. // Filmsequenz Zuweisungen
  2. mcBall1.onEnterFrame = function() {
  3. // Gravitation = 1 (Erde)
  4.     this.setGravitation(1, 284);
  5. };
  6.  
  7. Movieclip.prototype.setGravitation = function(pGravitation, pBoden) {
  8. // yTempo wird immer um 1 erhöht, da der Ball ja nach unten fällt und somit seine Geschwindikeit zunimmt darum this.yTempo += pGravitation
  9.     this.yTempo += pGravitation;
  10. // Somit ändert sich auch der y Wert immer schneller
  11.     this._y += this.yTempo;
  12. // Wenn er am Boden angkommt, prallt er ab und fliegt mit dem endtempo nach oben
  13. // Wobei hier glaube ich noch fehlt das wenn er nach oben fliegt auch das Tempo wieder abnehmen sollte
  14.     if (this._y >= pBoden) {
  15.         this._y = pBoden;
  16.         this.yTempo *= -1;
  17.     }
  18. };

Denke so was in der Art....hoffe das klärt deine Frage nach der Definition.

Gruß

KamiKC
kamiKC ist offline   Mit Zitat antworten
Alt 03-12-2004, 10:17   #6 (permalink)
see
Neuer User
 
Registriert seit: May 2004
Beiträge: 44
ja das stimmt soweit schon, Aber ytempo braucht doch einen Ausgangswert.

naja
danke
see ist offline   Mit Zitat antworten
Alt 03-12-2004, 10:33   #7 (permalink)
Schokolaaaadeeeeee
 
Registriert seit: Apr 2004
Ort: Saarbrücken
Beiträge: 173
Hi see,

Ausgangswert ist in dem Fall doch immer undefined ?!

Die Prototypklasse gilt ja in dem Moment neu für jeden Ball. Wenn die gerufen wird ist this.yTempo einfach eine Variable des Balles ohne Inhalt (undefined) und da wird dann pGravitation hinzuaddiert.
Also ist this.yTempo am Anfang undefined, dann 1 und wird immer um 1 schneller.

[EDIT]
Habe einfach mal einen trace gemacht (siehe Anhang). Sollte alles beantworten

ist also so wie ich dachte. Wird ja auch wieder langsamer da y negiert wird und dann addiert bis 0.

Gruß

kamiKC
Angehängte Dateien
Dateityp: zip gravi.zip (2,4 KB, 35x aufgerufen)

Geändert von kamiKC (03-12-2004 um 10:50 Uhr)
kamiKC ist offline   Mit Zitat antworten
Alt 03-12-2004, 11:09   #8 (permalink)
see
Neuer User
 
Registriert seit: May 2004
Beiträge: 44
wow !


Ja ich brauch da einfach noch ein wenig bis ich das Actionscript versteh!

Vielen Dank für deine Mühen !

lg


und schönes Wochenende

see
see ist offline   Mit Zitat antworten
Alt 03-12-2004, 11:10   #9 (permalink)
Schokolaaaadeeeeee
 
Registriert seit: Apr 2004
Ort: Saarbrücken
Beiträge: 173
kein Problem

Gruß

kamiKC
kamiKC 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 17:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele