Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-07-2004, 16:10   #1 (permalink)
Affine Abbildung
 
Benutzerbild von Samuel
 
Registriert seit: Feb 2002
Ort: Bremen
Beiträge: 15.089
Sinnvolle Bewegungsverlangsamung?

Garnicht so leicht, das pasende zu finden.
also ich hab ne AS bewegung, die nichts mit tweens zutun hat, alleine deshalb nicht, weil ein Mc 5 verschiedenen positionen haben kann.
Nun ists für mich garnicht so leicht, dem ding dynamisch eine verlangsamung zu verpassen, welche am ende die exakte pixel position einzunehmen.

Prinzipiel kann man ja abfragen, ob mc position größer gleich wert x ist und dann auf hören, dies klappt aber insofern nicht, da die bewegung des mcs in beide richtung gehen kann. Daher ziel ich auf eine abfrage, wo pixel position des Mcs == X Wert ist, dh jegliche ungenauigkeit würde niemals , oder nur mit glück true in diesem falle ausgeben.
Daher kann ich die bewegungs geschwindigkeit auch nicht immer reduzieren und hoffen, irgendwie auf die pixelzahl kommen.
N weiterer haken, die zahlen sind nicht rund, also es gibt -37, oder -285 oder auch -111.
Nun kann ich es natürlich umständlich machen, mit riesigen if abfragen, aber ich will so effizient wie möglich arbeiten, daher frag ich ja grade

Mein aktueller status ist der, dass ich erst prüfe, ob sich der mc links oder rechts von der wunschposition befinden und setzte dann entsprechend einen wert auf entweder -1 oder 1, mit dieser wert wird die verschiebung multipliziert und schon funzts, aber nur, wenn man das ding pixel für pixel schubst.
__________________
Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben?

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net

Hier ruhn meine Gebeine - ich wollt, es wären Deine.

Try to look unimportant, they may be low on ammo!

Was ist euer Lieblings-Datentyp? Schreibt mir!
Samuel ist offline   Mit Zitat antworten
Alt 30-07-2004, 16:16   #2 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
PHP-Code:
MovieClip.prototype.move=function(xziel,yziel)
{
    
this.onEnterFrame=function()
    {
        
Math.round(this._x) != ziel ? (this._x +=(-this._x+xziel)*.3,this._y +=(-this._y+yziel)*.3) : (delete this.onEnterFrame,this._x=xzielthis._y=yziel);
    }
}
_root.onMouseDown=function()
{
    
mc.move(Math.round(_root._xmouse),Math.round(_root._ymouse))

grz
warrantmaster ist offline   Mit Zitat antworten
Alt 30-07-2004, 16:46   #3 (permalink)
Affine Abbildung
 
Benutzerbild von Samuel
 
Registriert seit: Feb 2002
Ort: Bremen
Beiträge: 15.089
Da hab ich den haken gefunden. Bei mir schießt er ab und zu übers ziel hinaus, dabei kommt es zu unvorhersehbaren reaktionen.
Also primär sieht das Script so aus:

ActionScript:
  1. i = this._x>nav[this.tiefe][this.wahl]? -1: 1;
  2.   trace(Math.round(this._x)+" __ "+this._x);
  3.   Math.round(this._x) != nav[this.tiefe][this.wahl]
  4.   ? (this._x +=(-this._x*.2)*i)
  5.   : (delete this.onEnterFrame,this._x=nav[this.tiefe][this.wahl]);
Nav is halt n array, der wert von I wird richtig gesetzt, aber der wert, mit dem bewegt wird schießt oft übers ziel hinaus.
Das ist es ja, was ich nicht effektiv beseitigen kann, mist!
__________________
Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben?

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net

Hier ruhn meine Gebeine - ich wollt, es wären Deine.

Try to look unimportant, they may be low on ammo!

Was ist euer Lieblings-Datentyp? Schreibt mir!

Geändert von Samuel (30-07-2004 um 16:51 Uhr)
Samuel ist offline   Mit Zitat antworten
Alt 30-07-2004, 17:29   #4 (permalink)
Affine Abbildung
 
Benutzerbild von Samuel
 
Registriert seit: Feb 2002
Ort: Bremen
Beiträge: 15.089
Es geht voran, ich hab es modifiziert.
Es würde klappen, wenn ich das != durch ein > ersetzten würde, und den Paramter i mal this._x nehmen würde.
also das sieht dann so aus:

ActionScript:
  1. i = this._x>nav[this.tiefe][this.wahl]? -1: 1;
  2.    Math.round(this._x)*-i > nav[this.tiefe][this.wahl]
  3.   ? (this._x +=(-this._x*.3)*i)
  4.   : (delete this.onEnterFrame);//,this._x=nav[this.tiefe][this.wahl]);
  5.  

Theoretisch sieht das gut aus, es passt sich automatisch der Richtung an, soweit sogut, aber leider wird der delete onEnterFrame Event niemals ausgeführt, weil die Bedingung niemals false sein wird, denn hier ist mal n Trace

Code:
-185 __ -259   i=-1
-240.5 __ -259   i=-1
-312.65 __ -259   i=1
-218.85 __ -259   i=-1
-284.5 __ -259   i=1
-199.15 __ -259   i=-1
-258.85 __ -259   i=-1
Das erste ist _x und das zweite ist der soll Wert.
Der dritte Wert müsste einen Abbruch auslösen, da aber der Wert I dabei auch umgekehrt wird, is das ganze so ziemlich sinnlos, weils wie irre hin und her flutscht, und zwei abbruch bedingungen will ich ja auch nicht einsetzen
__________________
Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben?

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net

Hier ruhn meine Gebeine - ich wollt, es wären Deine.

Try to look unimportant, they may be low on ammo!

Was ist euer Lieblings-Datentyp? Schreibt mir!
Samuel ist offline   Mit Zitat antworten
Alt 30-07-2004, 17:40   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
also ich weiß nicht, mir gefällt das nicht, mit euren ganzen tenären Operatoren uns so.

Ich hab es mal ganz normal, mit ifs und so erstellt, im Anhang die Fla.

Ist so wie es ist, eigentlich ganz einfach, fragt sich nur, ob die Abbremsung dir gefällt. Wenn du den Divisor größer machst, ist die Bewegung langsamer, wenn du ihn auf 1 stellst, in einem Frame abgelaufen
Angehängte Dateien
Dateityp: zip test.zip (2,8 KB, 11x aufgerufen)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 30-07-2004, 17:45   #6 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
@mm

ich verstehe dein ganzes -1 und1 geschalte nicht,
wenn du den prototype einbaust ist es egal, wie die richtung ist,
das ding geht immer genau auf die übergebenen koordinaten,
egal, wo es gerade ist...

@
janosch

ist doch egal, wie man das schreibt,
wenn es nur funzt.
warrantmaster ist offline   Mit Zitat antworten
Alt 30-07-2004, 17:49   #7 (permalink)
Affine Abbildung
 
Benutzerbild von Samuel
 
Registriert seit: Feb 2002
Ort: Bremen
Beiträge: 15.089
@warrantmaster, ich habe funktionen, die ich nicht modifizieren möchte. (Also in prototypes ändern)
Und ich habs im grunde ja mit deiner Methode gemacht, aber es hat nicht funktioniert. ausserdem ists doch ersichtlich, oder nicht? Dass das mal 0.3 nehmen niemals auf die gewünschte zahl kommen wird.
Beispiel. _x ist 500 und soll auf 700, dann gehts so:
1: 500
2: 500+(500*0,3)= 650
3: 650+(650*0,3)= 845

Damit sind wir schon übers ziel geschossen

@Janosch, ich gucks mir mal an, aber für mich persönlich gibts da zuviele funktionen und objekte
__________________
Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben?

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net

Hier ruhn meine Gebeine - ich wollt, es wären Deine.

Try to look unimportant, they may be low on ammo!

Was ist euer Lieblings-Datentyp? Schreibt mir!

Geändert von Samuel (30-07-2004 um 17:55 Uhr)
Samuel ist offline   Mit Zitat antworten
Alt 30-07-2004, 18:04   #8 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ok, das erste laß ich gelten (funktionen ändern),
aber das zweite ist schlicht falsch.

this._x +=(-this._x+ziel)*.3

...das führt den mc punktgenau auf den wert von "ziel", mit der korrektur 0.3,
die durch die math.round-geschichten ausgeglichen wird.
darauf wette ich meinen arsch
warrantmaster ist offline   Mit Zitat antworten
Alt 30-07-2004, 18:05   #9 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Mit Verlaub, aber dein AS ist irgendwie ziemlich Müll.

Es macht keinen Sinn, die Geschwindigkeit der Bewegung von der Position des MovieClips abhängig zu machen, oder nicht?

Wenn du dich aber auf die Position deines MovieClips beziehst, so ist ein MC der links ist schneller, als ein MC der rechts ist.

Mit Abbremsung hat es auch nichts zu tun.

Die Geschwindigkeit, sollte, bei einer Gleichmäßigen Abbremsung von der Entfernung vom Ziel abhängen.
Also musst du irgendwo die Koordinatendifferenz von Start- und Endpunkt bilden. Und diese Differenz beinhaltet auch schon das Vorzeichen der Bewegung, da kannste dir auch gleich das i sparen.
Janoscharlipp ist offline   Mit Zitat antworten
Alt 30-07-2004, 18:08   #10 (permalink)
Affine Abbildung
 
Benutzerbild von Samuel
 
Registriert seit: Feb 2002
Ort: Bremen
Beiträge: 15.089
@warrantmaster, ich verneige mich dafür.
Funzt doch irgendwie gut
__________________
Solange sich auch nur einer an ihn erinnert, solange auch nur ein Herz mit Leidenschaft schlägt - wie kann ein Traum da sterben?

If you use the wrong line ending characters when writing your files, you might find that other applications that open those files will "look funny". - PHP.net

Hier ruhn meine Gebeine - ich wollt, es wären Deine.

Try to look unimportant, they may be low on ammo!

Was ist euer Lieblings-Datentyp? Schreibt mir!
Samuel ist offline   Mit Zitat antworten
Alt 30-07-2004, 18:15   #11 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
Zitat:
Zitat von Marilyn Manson
Funzt doch irgendwie gut

*muharrharr...*
warrantmaster ist offline   Mit Zitat antworten
Alt 30-07-2004, 18:15   #12 (permalink)
nobody is perfect
 
Benutzerbild von Decrone
 
Registriert seit: Apr 2002
Ort: Bremen
Beiträge: 3.049
sagt nix über unsern Warranti, er weiß...was er da macht (liebmeint)

@Hio Warri altes Haus wie gehts?
__________________
FF Unterstützen! Erste Hilfe! häufig gestellten Fragen
...................... ............... ................................
Decrone ist offline   Mit Zitat antworten
Alt 30-07-2004, 22:44   #13 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
hi decrone, warst lang nicht hier...?!?

btw, wie's geht ?...das leben ist ein einziger streß !

grz


<nachtrag> dein avatar sieht immer noch scheußlich aus...! </nachtrag>

Geändert von warrantmaster (30-07-2004 um 22:45 Uhr)
warrantmaster ist offline   Mit Zitat antworten
Alt 31-07-2004, 02:31   #14 (permalink)
Gelegenheits-DAU
 
Benutzerbild von TOAOTC
 
Registriert seit: May 2003
Ort: Schwerin - come to where the Hecht beißt
Beiträge: 187
Ich habe mal nen uralten prototype rausgekramt, der dein problem mehr als lösen dürfte:
PHP-Code:
MovieClip.prototype._glide = function(gotopropdelay) {
    
/* Für jede Eigenschaft andere Tiefe festlegen */
    
var props = {_alpha:1_rotation:2_height:3_width:4_x:5_y:6_xscale:7_yscale:8}

    
this.createEmptyMovieClip('glider'+propprops[prop]+1000000);    // glider-MC erstellen
    /* Aktion schleifen */
    
this['glider'+prop].onEnterFrame = function() {
        
this.difference this._parent[prop]-goto;            // Entfernung des MC von Sollposition
        
this.step this.difference/delay;                    // neue position berechnen
        
this._parent[prop] -= this.step;                    // MC positionieren
        /* wenn MC nahe Sollposition */
        
if((Math.floor(this.difference) == 0) || (Math.ceil(this.difference) == 0)) {
            
this._parent[prop] = goto;                    // MC endgültig positionieren
            
removeMovieClip(this);                    // glider-MC entfernen
        
}
    };
}; 
Ein Beispielaufruf wäre:
PHP-Code:
meinmc._glide(500"_x"6); 
Der Nachteil bei dieser Variante ist, dass Sie nicht mit Festwerten arbeitet, sondern bei jedem onEnterFrame den Wert der Eigenschaft direkt abfragen muss.

Geändert von TOAOTC (31-07-2004 um 02:32 Uhr)
TOAOTC ist offline   Mit Zitat antworten
Alt 01-08-2004, 21:41   #15 (permalink)
nobody is perfect
 
Benutzerbild von Decrone
 
Registriert seit: Apr 2002
Ort: Bremen
Beiträge: 3.049
Zitat:
Zitat von warrantmaster
hi decrone, warst lang nicht hier...?!?

btw, wie's geht ?...das leben ist ein einziger streß !

grz

dein avatar sieht immer noch scheußlich aus...!
Zitat:
btw, wie's geht ?...das leben ist ein einziger streß !
wem sagst Du das....das ist auch der Grund, warum ich hier so selten bin aber ansonsten ist alles im grünen bereich...danke...frische grade meine grauen AS-Zellen a bisle auf…

Zitat:
dein avatar sieht immer noch scheußlich aus...!
smile...a’ wo gewöhnst dich noch dran
__________________
FF Unterstützen! Erste Hilfe! häufig gestellten Fragen
...................... ............... ................................
Decrone 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 05:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele