読者です 読者をやめる 読者になる 読者になる

MatrixとMatrix3Dについて

ActionScript3

FlashPlayer10からMatrix3Dクラスが増え、TextFieldクラスでデバイスフォントでも文字の回転を行える事ができるようになりました。
といっても単純に、

text.rotation = 1;

とかで回転してもフォントは消えてしまいます。
そこでMatrix3Dクラスを使用します。
と、言っても、

text.z = 0;
text.rotation = 1;

とやるだけでOKです。以下で解説します。

解説

MatrixとMatrix3Dクラスのオブジェクトへは次のようにアクセスします。

text.transform.matrix
text.transform.matrix3D

どちらも使用する事は可能ですが、同時に使用する事は不可のようです(当然かもしれませんが)。
初期状態ではmatrixを使用している為、traceするとmatrixにオブジェクトが入っている事を確認できますが、matrix3Dはnullになります。
以下の様な感じです。

var text:TextField = new TextField();
this.addChild(text);
trace(text.transform.matrix);   //(a=1, b=0, c=0, d=1, tx=0, ty=0)
trace(text.transform.matrix3D); //null

しかし、text.z代入する等するとmatrix3Dオブジェクトが生成され、matrixプロパティはnullになります。
以下の様な感じ。

var text:TextField = new TextField();
this.addChild(text);
text.z = 0;
trace(text.transform.matrix);   //null
trace(text.transform.matrix3D); //[object Matrix3D]

つまり以下と同じと言う事ができると思います。

var text:TextField = new TextField();
this.addChild(text);
text.transform.matrix3D = new Matrix3D();
trace(text.transform.matrix);   //null
trace(text.transform.matrix3D); //[object Matrix3D]


ちなみに、もしかしたらMatrix3DからMatrixに戻したい時があるかもしれません。そんな時は以下のようにすればMatrixへ切り替わります。

text.transform.matrix = new Matrix();


以上です。