Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-10-2003, 19:17   #1 (permalink)
just j... for beacestylee
 
Benutzerbild von haartrockner
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 205
bewegung und wenn x2,y2 erreicht, zurück zu x1,y1

hallo,
versuche schon ne ganze weile eine einfache bewegung auf einen mc zu setzen. start: x1,y1 ziel: x2,y2. das ganze dann in einer schleife, sprich immer hin un her. habe mir das ganze so zusammengeklaut... aber irgendwie stimmt, glaube ich, was mit der if-Abrage nich... ich komme nich drauf... un ganz fertig wird es dann wohl sicherlich auch nich sein, oder? fährt der mc dann die ganze zeit hin un her?
danke für jede erdenkliche hilfe
ActionScript:
  1. onClipEvent (load) {
  2.     speed = 70;
  3.     slow = 1.2;
  4. }
  5. onClipEvent (enterFrame) {
  6.     this._x += ((400-_x)/speed)/slow;
  7.     this._y += ((360-_y)/speed)/slow;
  8.     if (this._x==400 && this._y==360) {
  9.         this._x += ((30-_x)/speed)/slow;
  10.         this._y += ((30-_y)/speed)/slow;
  11.         } else {
  12.     }
  13. }
haartrockner ist offline   Mit Zitat antworten
Alt 12-10-2003, 19:36   #2 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
ActionScript:
  1. if (this._x==400 && this._y==360) {
  2. do {
  3.                 this._x += ((30-_x)/speed)/slow;
  4.                 this._y += ((30-_y)/speed)/slow;
  5.        } while (this._x != (anfangsposition) && this._y != (anfangsposition) )
  6. }
habs net ausprobiert.
"(anfangspositon)" solltst du mit dem ensprechenden wert austauschen.
müsste aber eigentlich so gehen ...weiß aber net ob ers schafft die anfangsposition zu treffen .. müsstest vielleicht andere operatoren benutzen: < oder >

Edit:
zumindest, wenn ich dein problem richtig verstanden habe. Bei deinem script müsste sich dein mc nur in eine richtung bewegen und am endpunkt "zitternd" verharren.
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"

Geändert von Tuffyfant (12-10-2003 um 19:54 Uhr)
Tuffyfant ist offline   Mit Zitat antworten
Alt 12-10-2003, 19:47   #3 (permalink)
just j... for beacestylee
 
Benutzerbild von haartrockner
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 205
wow, ging aber flott. danke!!! aber, entweder bin ich zu blöd oder das funtzt nich...
eigentlich soll es gar nich zittern. aber ich war mir auch nich ganz sicher ob es zittert weil die bewegungen so minmal sin dass sie nich sichtbar sin, oder? also zittern brauch es absolut nich. einfach hin un her fahren.
haartrockner ist offline   Mit Zitat antworten
Alt 12-10-2003, 19:56   #4 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
sorry, das script oben hatte einen fehler .. ist schon wieder abgeändert.
versuchs mal nochmal und häng mal deine fla datei an ..
Gruß Tuffy
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"
Tuffyfant ist offline   Mit Zitat antworten
Alt 12-10-2003, 20:00   #5 (permalink)
just j... for beacestylee
 
Benutzerbild von haartrockner
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 205
hi,
hatte gesehen dass du noch was geändert hattest, geht leider trotzdem nich. aber hier ma meine "test.fla".
danke.
gruß´-phil
Angehängte Dateien
Dateityp: zip test.zip (6,1 KB, 22x aufgerufen)
haartrockner ist offline   Mit Zitat antworten
Alt 12-10-2003, 20:26   #6 (permalink)
*warg*
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 261
ok . hab erstmal was bemerkt . dein mc trifft niemals den wer _x = 400
er bleibt bei _x = 395.85 stehen

schreib mal hinter jede schleife im onenterframe
trace(this._x)
dann wirst du sehen, was ich meine
genauso mit _y .. da gehts nur bis _y = 355.85 ..

ActionScript:
  1. onClipEvent (load) {
  2.     speed = 70;
  3.     slow = 1.2;
  4. }
  5. onClipEvent (enterFrame) {
  6.     this._x += ((400-_x)/speed)/slow;
  7.     this._y += ((360-_y)/speed)/slow;
  8.     if (this._x == 395.85 && this._y == 355.85) {
  9.         do {
  10.             this._x += ((30-_x)/speed)/slow;
  11.             this._y += ((30-_y)/speed)/slow;
  12.         } while (this._x > 30 && this._y > 30);
  13.     }
  14.     trace(this._x);
  15. }

dann merkt er zumindest das er irgendwann bei _x = 395.85 angelangt ist .. schleudert den mc - aus mir unergründilchen gründen- zurück auf _x = 30 und _y = 30 .....
__________________
"nimm dir das leben - es gehört dir!"
"die realität versucht mich einzuholen - doch ich bin schneller !"
Tuffyfant ist offline   Mit Zitat antworten
Alt 12-10-2003, 20:36   #7 (permalink)
just j... for beacestylee
 
Benutzerbild von haartrockner
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 205
grüß dich,
tatsache... sehr komisch. nur jetzt is es so dass der mc wieder beim angelangen an punkt x2,y2 wieder zu x1,y1 springt. er sollte aber wieder zurück fahren. also auf die abbremsfunktion kann ich gut verzichten. vielleicht kommt das gute stück dann auch bei den werten 400 an... aber ich hab kein schimmer wie ich die raus bekomm
beace -phil
haartrockner ist offline   Mit Zitat antworten
Alt 13-10-2003, 08:02   #8 (permalink)
just j... for beacestylee
 
Benutzerbild von haartrockner
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 205
hmm,... is das ganze denn so schwer? ich versteh nich warum das nich geht...!?!??
haartrockner ist offline   Mit Zitat antworten
Alt 13-10-2003, 09:05   #9 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ActionScript:
  1. mc._x = ziel=xziel=10;
  2. mc._y = ziel=yziel=10;
  3. mc.onEnterFrame = function() {
  4.     if (Math.round(this._x) != xziel) {
  5.         this._x += (-this._x+xziel)*.3;
  6.         this._y += (-this._y+yziel)*.3;
  7.     } else {
  8.         xziel = ziel;
  9.         yziel = ziel;
  10.     }
  11. };
  12. _root.onMouseDown = function() {
  13.     xziel = Math.round(_root._xmouse);
  14.     yziel = Math.round(_root._ymouse);
  15. };

....immer mal das trace benutzen, dann wird einiges
auch klar.

grz
warrantmaster ist offline   Mit Zitat antworten
Alt 13-10-2003, 10:19   #10 (permalink)
just j... for beacestylee
 
Benutzerbild von haartrockner
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 205
danke. aber, hmm. weiß nich so ganz wie ich das einbauen soll/kann. und wieso is da ne onMouseDown Funktion drin? soll alles automatisch die ganze zeit hin un her fahren. ich hab da noch ein script im forum gefunden dass von der administration her auch ganz einfach wäre. weiß allerdings nicht so genau wie ich da einen zweiten punkt und einen interval hinzufüge.
ActionScript:
  1. onClipEvent (load) {
  2.     xk1 = 15;
  3.     yk1 = 15;
  4. //  xk2 = 50;
  5. //  yk2 = 50;
  6.     speed = 2;
  7.     this._x = xk1;
  8.     this._y = yk1;
  9. //  this._x = xk2;
  10. //  this._y = yk2;
  11. }
  12. onClipEvent (enterFrame) {
  13.     if (this._x<xk2) {
  14.         this._x += speed;
  15.     }
  16.     if (this._y<yk2) {
  17.         this._y += speed;
  18.     }
  19. //  if (this._xk2==true && this._yk2==true){
  20. //    this._x += speed;
  21. //    this._y += speed;
  22. //  }
  23. }

das ausgeklammerte zeug is von mir. da hab ich versucht nen zweiten "punkt" einzubauen...
danke. -beace
haartrockner ist offline   Mit Zitat antworten
Alt 13-10-2003, 13:32   #11 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ActionScript:
  1. onClipEvent (load) {
  2.     xziel = 300;
  3.     yziel = 300;
  4.     xstart = 15;
  5.     ystart = 15;
  6.     _x = xstart;
  7.     _y = ystart;
  8.     count = 0;
  9.     delay = .3;
  10. }
  11. onClipEvent (enterFrame) {
  12.     if (count == 0) {
  13.         _x += (-_x+xziel)*delay;
  14.         _y += (-_y+yziel)*delay;
  15.         if (Math.round(_x) == xziel) {
  16.             count = 1;
  17.         }
  18.     }
  19.     if (count == 1) {
  20.         _x += (-_x+xstart)*delay;
  21.         _y += (-_y+ystart)*delay;
  22.         if (Math.round(_x) == xstart) {
  23.             count = 0;
  24.         }
  25.     }
  26. }

das onmousedown war nur zur veranschaulichung da.
btw, warum legt ihr eure scripte noch immer oftmals
in die instanzen und nicht auf die hzl ?
warrantmaster ist offline   Mit Zitat antworten
Alt 13-10-2003, 13:48   #12 (permalink)
just j... for beacestylee
 
Benutzerbild von haartrockner
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 205
ich bin halt noch nich ganz so fit, oder auch gar nich ;-P, in as. die mc werden extern geladen. deshalb da...
aber das script is auf jeden fall mal richtig geil. genau das hab ich gesucht. von der idee war ich mittlerweile auch schon fast so weit. aber ich wusste noch nich so ganz wie ich das in as nieder bringe ;-P
muss ich nur noch schauen wie ich das gute stück langsamer bekomm... oder hilfst mir noch schnell auf die sprünge
aber auf jeden fall mal BESTEN DANK. werde dich weiterempfehlen, oder so...
beace
haartrockner ist offline   Mit Zitat antworten
Alt 13-10-2003, 14:10   #13 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ActionScript:
  1. onClipEvent (load) {
  2.     xziel = 300;
  3.     yziel = 300;
  4.     xstart = 15;
  5.     ystart = 15;
  6.     _x = xstart;
  7.     _y = ystart;
  8.     count = 0;
  9.     delay = .3;
  10. speed=2;
  11. }
  12. onClipEvent (enterFrame) {
  13.     if (count == 0) {
  14.         _x += speed//(-_x+xziel)*delay;
  15.         _y += speed//(-_y+yziel)*delay;
  16.         if (Math.round(_x) >= xziel) {
  17.             count = 1;
  18.         }
  19.     }
  20.     if (count == 1) {
  21.         _x -= speed//(-_x+xstart)*delay;
  22.         _y -= speed//(-_y+ystart)*delay;
  23.         if (Math.round(_x) <= xstart) {
  24.             count = 0;
  25.         }
  26.     }
  27. }

die differenzen zwischen xstart/xziel sowie ystart/yziel müssen allerdings gleich sein, ansonsten mußt du einen faktor einbauen.
das wiederum hat mehr mit mathe als as zu tun
warrantmaster ist offline   Mit Zitat antworten
Alt 13-10-2003, 14:25   #14 (permalink)
just j... for beacestylee
 
Benutzerbild von haartrockner
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 205
ich dachte mir schon fast sowas. ich war/bin mir nur nich ganz sicher ob das
ActionScript:
  1. (-_x+xziel)*delay;
  2.                 (-_y+yziel)*delay;
irgendwas wichtiges sein könnte. weil so ganz verstehen tu ich den part nich.
aber besten dank. übrigens, mathe is geil. aber mir fehlt noch ein wenig die erfahrung das 1+1 mit as zu kombinieren. sobald ich was fertiges vor mir liegen hab, wird mir immer einiges klar und verständlich... k. merci un beace...
haartrockner ist offline   Mit Zitat antworten
Alt 15-10-2003, 10:46   #15 (permalink)
just j... for beacestylee
 
Benutzerbild von haartrockner
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 205
lol, kann ja gar noch so wichtig sein... hat ja nur was mit der bewegung zu tun...

aber, hier ma meine modifizierte variante. wieso klappt das nicht wenn das ziel einen kleineren wert hat als der start? komme echt nich drauf... please help.
ActionScript:
  1. onClipEvent (load) {
  2.     xstart = 200;
  3.     ystart = 200;
  4.     xziel = 100;
  5.     yziel = 100;
  6.     _x = xstart;
  7.     _y = ystart;
  8.     count = 0;
  9.     dura = 100;
  10.     speedx = (xziel-xstart)/dura;
  11.     speedy = (yziel-ystart)/dura;
  12. }
  13. onClipEvent (enterFrame) {
  14.     if (count == 0) {
  15.         if (xstart != xziel) {
  16.             _x += speedx;
  17.         }
  18.         if (ystart != yziel) {
  19.             _y += speedy;
  20.         }
  21.         if (Math.round(_x)>=xziel) {
  22.             count = 1;
  23.         }
  24.     }
  25.     if (count == 1) {
  26.         if (xstart != xziel) {
  27.             _x -= speedx;
  28.         }
  29.         if (ystart != yziel) {
  30.             _y -= speedy;
  31.         }
  32.         if (Math.round(_x)<=xstart) {
  33.             count = 0;
  34.         }
  35.     }
  36. }
besten dank!
beace
haartrockner 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 20:17 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele