Flex 3: Koordinatengenauigkeit von MovieClips

Snotgun

Mitglied
Hallo!

Ich habe ein kleines Problem in Flex: Eine vom MovieClip abgeleitete Klasse soll langsam an eine Position "fahren". Klappt auch alles ganz gut: Im Konstruktor und bei Veränderungen hängen sich die Objekte in ihren EnterFrame Handler ein und hängen sich erst dann wieder aus, wenn sie an der gewünschten Position angekommen sind.

Problematisch ist es geworden, als ich ein Objekt zentrieren, also auf halbe eigene Breite setzen wollte. Die Zahl ist naturgemäß ein wenig krumm, was nicht weiter stört, wenn dabei nicht folgendes, skurilles Problem auftreten würde:

Code:
			var mc:MovieClip = new MovieClip();
			mc.x = 0.09;
			trace(mc.x); // traces 0.05

Die Koordinaten können also nicht gleich werden, weil der MC offensichtlich merkwürdigst rundet. Deshalb wird der Handler nicht mehr ausgehängt und das System unnötig belastet (weil die Funktion immer wieder aufgerufen wird). Ist das ein bekannter Bug? Gibt es da einen guten Workaround?

Schönen Dank schonmal in Voraus
Snotgun
 
Das ist kein skurilles Porblem: Du kannst nicht mehr als genau eine Kommastelle für eine Koordinate angeben, alles andere wird gerundet. Ich weiss nicht welches Animationssystem du benützt, wenn nicht ein eigenes. Aber grundsätzlich weist man der animierten Eigenschaft am Schluss eines programmatischen tweens immer den Endwert zu. So wäre dein Problem gegessen.

Übrigens wird das nicht nur in Flex so gehandelt, sondern allgemein in auf ActionScript basierenden Apps.
 
Zuletzt bearbeitet:
Okay, dann muss ich wohl damit klarkommen ;)

Der Tween hat natürlich aufgehört - das Ganze Framework ist nur schon ein wenig weiter angewachsen und hat an ein paar Stellen einen Vergleich von Ziel- zu aktuellen Koordinaten angestellt, der dann halt nie nach wahr ausgewertet ist. Nichts was man nicht fixen konnte, aber halt merkwürdig. Vor allem, weil Flex nicht auf genau eine Nachkommastelle rundet, sondern in Schritten von 0.05 weitergeht.

Trotzdem schönen Dank :)
 
Zurück