Positionierung eines MC per AS (MX)

TyronD

Grünschnabel
Hallo,

habe ein kleines Problem und finde keinen Lösungs ansatzt,
Ich möchte die Position meines MC (rmask) auf der X Achse ermitteln
um Ihn von dort (bzw jeder Variablen Position auf der X Achse)
zu einer definierten Position zu fahren.
bsp. Datei ist unten Angehängt

Hier der Code

Code:
//bestimmung der Aktuellen Position

posrmask=_root.rmask;
trace (posrmask._x);

// Aktuelle Position  des MC Vergeleichen und MC 
// auf X Achse entsprechend Verschieben

if(posrmask._x<=362.3){
posrmask._x+=20;
}
if(posrmask._x>=362.3){
posrmask._x-=20;
}

Wo liegt mein Fehler was ist zu tun?!

Vielen Dank im Vorraus
greetz Tyron

Download
 
Zuletzt bearbeitet:
Abend,

ich möchte mir die fla nicht extra downloaden, dir aber trotzdem gerne helfen. Dazu bräuchte ich aber weiter Informationen zu deinem Problem.. was genau funktioniert denn nicht? Auf den ersten Blick fällt mir das zur Animation fehlende onEnterFrame = function(){ auf.

_keen!
 
Hi,

nun der MC bewegt sich nur wenige Pixel oder gar nicht,
sprich bin ich hinter dem Zielpunkt bewegt er sich minimal,
bin ich davor bewegt er sich überhaupt nicht.

Schwer zu erklären ich denke du müsstest es dir Anschauen,
der Code selber, liegt auf einem MC der eine Schaltfläche beherbergt.

greetz Tyron
 
Hallo Tyron!

Hab mir gerade mal den Quellcode angeschaut. Prinzipiell ist der Code richtig bzw. erfüllt fast die gestellten Erwartungen. Das Problem liegt an Deinem "_data"-Objekt. Definiere es lokal (also mit "this." davor) an dem leeren MovieClip. Somit gerät man nicht in Gefahr, Werte einer Variablen durch parallele Prozesse zu überschreiben.

Setze außerdem vorsichtshalber den "loop_index" auf "0" (Initialwert).

Dein Code hat eine kleine Schwäche (keinen Fehler!): Durch die schrittweise Annäherung zum Ziel, kann es Dir passieren, dass durch den Pseudo-Multiplikator "speed" nicht exakt die Endposition erreicht wird. Das geschieht in der Regel aber auch nur bei Rundungsfehlern.

Alternativ schau Dir diesen Code an. Ist nur ein bißchen abgewandelt, aber auch auf "weite Strecken" exakt.

Code:
...
if( this._data == undefined )
{
	this._data = new Object();
	this._data.start_x = this._parent._x;
	this._data.start_y = this._parent._y;
	this._data.stop_x = to_x;
	this._data.stop_y = to_y;
	this._data.speed = speed;
	this._data.loop_index = 0;
}
this._parent._x = this._data.start_x + ((this._data.stop_x - this._data.start_x) / speed * this._data.loop_index);
this._parent._y = this._data.start_y + ((this._data.stop_y - this._data.start_y) / speed * this._data.loop_index);
if( this._data.loop_index ==  this._data.speed )
{
	delete( this._data );
	unloadMovie( this );
}
this._data.loop_index++;
...

Zum Schluß bleibt nur noch zu bemerken: "speed" ist eigentlich die falsche Benennung. Richtig wäre: "Anzahl der Schritte, in der das Ziel erreicht wird"! ;) Für eine konstante Geschwindigkeit müsste der Quelltext noch um einiges geändert werden.
 
Zurück