| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| 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 |
|
| | #2 (permalink) |
| Techniker 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) |
| | |
| | #3 (permalink) |
| 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. |
|
| | #4 (permalink) |
| Techniker 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) |
| | |
| | #5 (permalink) |
| 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. |
|
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |