1

私は2つのDisplayObjectを持っており、一方には以下のコードのようなもう一方が含まれています。

var sprite1:Sprite = new Sprite();

sprite1.addChild(loader1); // assume that I have load picture on to loader1

loader1.rotationZ = 30;

sprite1.rotationZ = -30; 上記のコードを実行すると、ローダー1の画像は、コンテナーが反対方向に回転するため、まったく回転していないように見えます。私が期待したように、これは正しいです。

しかし、コードに対して複数の軸を回転させた場合:

loader1.rotationZ = 30;

loader1.rotationY = 50;

sprite1.rotationZ = -30;

sprite1.rotationY = -50;

これで、loader1は異なる角度で回転します。私の質問は、なぜそれが互いに相殺されないのかということです。loader1とsprite1の両方のx、y、z位置がすべて0,0,0にあることに注意してください。また、この問題は、rotationX、Y、またはZに関係なく発生します。軸が1つある場合は、正常に機能します。2軸、そうではありません。

Flashが3Dでどのように回転するかを理解しようとしているので、このサンプルコードを投稿します。AS3ドキュメントでは、「3D親コンテナ」を中心に回転すると主張しています。それは何ですか。

4

1 に答える 1

0

回転は親を基準にしており、親オブジェクトを回転すると、子の参照フレームが変更されます。これは、1つの軸を中心に回転している場合は問題ではありませんが、2つの軸を中心に回転している場合は違いがあります。回転を元に戻すには、適用されたのとは逆の順序で、すべての回転を元に戻す必要があります。

本や携帯電話で、1つの軸を90度回転させてから、2番目の軸を回転させてみてください。始めたところに戻ることはできず、常に3番目の軸に関与していることになります。

于 2011-01-17T19:59:59.960 に答える