Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-08-2007, 18:02   #1 (permalink)
flashsnoopy
Gast
 
Beiträge: n/a
linearer Mausverfolger

Hi,
jeder kennt ja den allseits bekannten Mausverfolger:
_x = _x + _xmouse /10;
_y = _y + _ymouse / 10;

oder bei Mausklick:

onClipEvent(load){
xziel=this._x;
yziel=this._y;
}
onClipEvent(enterFrame){
this._x +=(-this._x+xziel)*.09;
this._y +=(-this._y+yziel)*.09;

_root.onMouseDown=function(){
xziel=this._xmouse;
yziel=this._ymouse;
}

Was ich suche (und auch schon mal gefunden habe, aber leider verloren) ist ein Mausverfolger,
der sich mit gleichförmiger Geschwindigkeit bewegt und ein Verfolger, der bei Annäherung schneller statt langsamer wird.

THX in adv
  Mit Zitat antworten
Alt 23-08-2007, 22:09   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
schneller ist z.b.
this._x +=(-this._x+xziel)*1.2;
hierbei kommt es aber unvermeidbar zu überschwingungen.

gleichmässig wäre z.b.
var dx=this._x-xziel;
this._x +=5 * Math.abs(dx)/dx;
if (Math.abs(dx)<5) this._x = xziel;


und schau dir mal in der flash-hilfe die tween-klassen an.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (23-08-2007 um 22:12 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 24-08-2007, 15:59   #3 (permalink)
flashsnoopy
Gast
 
Beiträge: n/a
also den gleichmässigen habe ich noch nicht getestet, aber der
"this._x +=(-this._x+xziel)*1.2;" funzt leider nicht, bis auf die angesprochene Schwingung,
die ja eigtl. nicht erwünscht ist - und wäre es so einfach, hätte selbst einer wie ich das
durch ausprobieren hingekriegt.
Trotzdem Danke für die Bemühung. Vielleicht kommen ja noch andere Lösungen.
  Mit Zitat antworten
Alt 24-08-2007, 21:18   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
prinzipiell:
this._x +=(xziel-this._x)*faktor;
man berechnet die differenz. bei faktor=1 wird immer der aktuelle abstand genommen, der verfolger wird auf die mausposition gesetzt.
bei einem faktor kleiner 1 wird der verfolger nur um ein stück zur mausposition hin bewegt. bewegt sich die maus nicht mehr, dann wird der abstand immer kleiner, dito die annäherung. was ein abbremsen bewirkt.
bei einem faktor grösser 1 wird logischer weisse beschleunigt. ABER das setzt vorraus, das die maus ständig bewegt wird, sonst überholt der verfolger die maus. steht die maus still, dann springt der verfolger übers ziel hinaus - auch das pendelt sich allmählich aus.
wird anstelle des faktors ein gleichbleibender abstand addiert, dann bewegt sich der verfolger logischer weisse gleichmässig schnell.


bei den TWEEN-classen gibt es alle mögliche annäherungs möglichkeiten. allerdings wird hier vorausgesetzt, das man anfangs- und endpunkt kennt. somit die gesamtstrecke auf die jeweils gewünschte strecken teilen kann.


bei einem verfolger geht das so nicht. bei einem verfolger kennt man nur den aktuellen abstand, die vergangenen abstände; aber nicht das ziel. wenn sich ein verfolger beschleunigt, dann ist die logische folge, das er irgendwann die verfolgte maus ein- bzw. überholt.
- man kann die methode der gleichmässigen bewegung benützen und hierbei den summanten kontinuierlich vergrössern.
- oder z.b. den (bzw. mehrere) vorhergehende abstände auswerten und daraus ein mögliches ziel ermitteln.
- die von mir genannte methode entspricht dem "tontaubenschiessen" (mit dauerschussfunktion ;-). zur erinnerung: verzögert ist immer hinterherlatschen. beschleunigt ist einholen, gegebenenfalls überholen.
man wählt einen vorhalt und erwartet, das die taube/maus in die schussbahn reinläuft. je nachdem, wie gross der vorhalt gewählt wurde rückt man dichter auf das ziel auf bzw. hat es überholt (zu viel vorhalt).
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (24-08-2007 um 21:50 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 24-08-2007, 22:34   #5 (permalink)
flashsnoopy
Gast
 
Beiträge: n/a
ja also... geht es nicht, dass ein MC sich einem anderem MC mit wachsender Geschwindigkeit nähert bis er ihn trifft
und stoppt... okay, sorry die bemühung.
ich dachte ich hätte so einen verfolger früher mal gefunden aber wie gesagt verloren und ohne den steht ein wort gegen
das andere, und wenn du flash-mäßig besser dastehst als ich, muss ich wohl passen.
  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 19:31 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele