Ich versuche, einen Sprite in drei Dimensionen um seinen Mittelpunkt zu drehen, und ich bemühe mich, etwas vom Verhalten von matrix3D zu verstehen.
Ich habe die Methoden rotationX, rotationY und rotationZ des Sprite wie folgt überschrieben:
%Vor%Ich verwende prependTranslation, um den Mittelpunkt der Rotation zu korrigieren, und die erste prependRotation, um eine zuvor angewendete Rotation aufzuheben.
Beim Testen funktioniert rotationX genau wie erwartet und der Sprite rotiert um seine horizontale Achse.
rotationY und rotationZ scheinen ebenfalls gut zu funktionieren. Es gibt jedoch ein Problem: Immer wenn rotationY oder rotationZ gesetzt sind, ändern sich auch alle anderen Rotationswerte. Dies ist kein Problem mit rotationX - wenn ich rotationX setze, ändert sich nichts. Aber wenn ich rotationY oder rotationZ setze, ändern sich alle Rotationswerte, was ein Problem für meine App ist (die versucht, Werte zu speichern und wiederherzustellen).
Ich glaube, mir fehlt einfach etwas Verständnis dafür, was mit matrix3D passiert. Wie kann ich dies implementieren, so dass keine gegenseitige Abhängigkeit zwischen den Werten besteht?
Eine weitere einfache Lösung besteht darin, das Objekt hinzuzufügen und es in einem Container-Sprite zu zentrieren und die 3D-Transformationen auf dem umgebenden Sprite auszuführen.
Tags und Links actionscript-3 3d flex rotation