Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-08-2005, 11:51   #1 (permalink)
Film und Medien
 
Registriert seit: Aug 2005
Ort: Mainz
Beiträge: 200
Bewegungsanimation programmieren, kürzester weg... ?

Leider habe ich durch die Suchkunktione nichts wirklich passendes gefunden, wie es eigentlich meistens möglich ist, deswegen frage ich diesesmal direkt.

Ich möchte, das sich ein Objekt auf der Bühne bewegt. Es gibt 5 Positionen, woraus sich insgesamt 20 Bewegungen ergeben. Für jede Bewegung einen Tween-Animation zu machen wäre mir zu aufwendig, das File würde doch dadurch unnötig komplex werden. Deswegen möchte ich die Bewegungen programmieren.
Die Positionen werden durch Buttons angesteuert. Ich klicke auf einen Button und die Zielkoordinaten werden festgelegt. Nun soll sich das zu bewegende Objekt auf dem kürzesten Weg dorthin bewegen. Eine bewegung an sich kann ich rudimentär programmieren, aber wie kann ich es machen, dass immer der kürzeste Weg gewählt wird? Er müsste also die schrittgröße Anpassen, so dass sich in der Zeit, die die Bewegung dauern soll, eine grade Line diagonal über den Bildschirm ergibt. Liege ich damit richtig?

Danke und schöne Grüße
Asta

Geändert von Asta (25-08-2005 um 12:16 Uhr) Grund: Hab ein fragezeichen vergessen...
Asta ist offline   Mit Zitat antworten
Alt 25-08-2005, 12:18   #2 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
aloha!

ActionScript:
  1. MovieClip.prototype.moveto = function(targetX, targetY, delay) {
  2.         if (this._x != targetX || this._y != targetY) {
  3.                 this.onEnterFrame = function() {
  4.                         var difX = -this._x+targetX;
  5.                         var difY = -this._y+targetY;
  6.                         if (Math.round(Math.abs(difX))>0 || Math.round(Math.abs(difY))>0) {
  7.                                 //
  8.                                 this._x += Math.round(difX/delay);
  9.                                 this._y += Math.round(difY/delay)
  10.                                 if( (difX/delay)1 ) delete this.onEnterFrame;
  11.                                 //
  12.                         }
  13.                 };
  14.         }
  15. };
  16.  
  17.  
  18.  
  19. button1.onPress = function(){
  20.         _root.deinMC.moveto(300,300,8);
  21. }
anpassen musst Du es halt noch....
mfG von _geo_
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary

Geändert von andretti (25-08-2005 um 12:20 Uhr)
andretti ist offline   Mit Zitat antworten
Alt 25-08-2005, 12:20   #3 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
argh! ne halbe minute zu spät.

naja, vielleicht hilft dir ja mein anhang auch ein bißchen.

gruß, gaspode
Angehängte Dateien
Dateityp: zip direkterWeg.zip (4,7 KB, 36x aufgerufen)
gaspode ist offline   Mit Zitat antworten
Alt 25-08-2005, 12:26   #4 (permalink)
Flashseppel
 
Benutzerbild von fred am rechner
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 442
das ist eigentlich reine mathematik.
ich würd die diagonale linie berechnen
(neuer xwert - alter xwert) hoch zwei
plus
(neuer ywert - alter ywert) hoch zwei

... und dann die wurzel aus dem ganzen

anhand von diesem wert die schrittgröße berechnen (damit alle bewegungen gleich schnell ablaufen, falls du das willst)
quasi wenn diagonale lang -> große schrittgröße und umgekehrt

dann die x-verschiebung und die y-verschiebung jeweils teilen durch die schrittgröße, so daß du den wert für einen schritt in x- oder y-richtung erhätlst

und dann inner for-schleife die x- und y- koordinate um je eine schrittgröße verändern

(ist glaub ich jetzt bissel ******e formuliert alles, sry, hoffe trotzdem verständlich)
fred am rechner ist offline   Mit Zitat antworten
Alt 25-08-2005, 12:27   #5 (permalink)
Flashseppel
 
Benutzerbild von fred am rechner
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 442
hm, auch zu spät...
fred am rechner ist offline   Mit Zitat antworten
Alt 25-08-2005, 14:36   #6 (permalink)
Film und Medien
 
Registriert seit: Aug 2005
Ort: Mainz
Beiträge: 200
Thumbs up

Hallo ihr!

Vielen, vielen Dank für die superschnelle Hilfe. Ich habe das noch etwas umgebaut und jetzt funktioniert es so wie ich es brauche! Danke nochmal.

Schöne Grüße
Asta
Asta ist offline   Mit Zitat antworten
Alt 26-08-2005, 14:38   #7 (permalink)
Film und Medien
 
Registriert seit: Aug 2005
Ort: Mainz
Beiträge: 200
Hallo nochmal

Die Bewegung funktioniert soweit ja ganz gut, nur manchmal springt das sich bewegende Objekt. Woran kann das liegen? Mir ist nicht ganz klar, wie es dazu kommt. Und leider kann ich auch nicht sagen, wann es immer auftritt. Da gibt es keine Regelmässigkeit.

Danke und schöne Grüße
Asta
Asta ist offline   Mit Zitat antworten
Alt 26-08-2005, 14:44   #8 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
Talking

zeig doch mal was du hast. meine glasskugel ist grad offline! :P
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 26-08-2005, 17:23   #9 (permalink)
Film und Medien
 
Registriert seit: Aug 2005
Ort: Mainz
Beiträge: 200
Hi Dante

Ich benutze den Code aus dem Attachement von Gaspode. Ich habe da nichts groß geändert, ausser den Instanzennamen. Und der Fehler tritt auch in dem ursprünglichen File von Gaspode auf.

Schöne Grüße
Asta
Asta ist offline   Mit Zitat antworten
Alt 26-08-2005, 18:00   #10 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!
Da hat gaspode gepfuscht

Du musst noch eien 2te Abfrage mach, so z.B.:
ActionScript:
  1. if (Math.abs(differenzX)<0.05 && Math.abs(differenzY)<0.05) {
Denn wenn der Ring nur auf der Y-Achse bewegt werden muss ist
ActionScript:
  1. Math.abs(differenzX)<0.05
sofort erfüllt.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 26-08-2005, 18:09   #11 (permalink)
Film und Medien
 
Registriert seit: Aug 2005
Ort: Mainz
Beiträge: 200
Hi Frager

Danke für die Lösung! Ich habe es grade mit ein wenig mehr erforschen, testen und Code-anschauen sogar selbst rausbekommen *ganz stolz sei!* .
Aber trozdem vielen Danke!

Schöne Grüße
Asta
Asta ist offline   Mit Zitat antworten
Alt 30-08-2005, 17:19   #12 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
@DerFrager:

>Da hat gaspode gepfuscht

soso, hab ich das.
das muß ich mir ja gleich mal angucken ...

gruß, gaspode
gaspode 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:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele