疑似3D回転Matrix
CS4があれば無用の長物ですが
傾斜変形を利用した疑似3D回転を
表現するためのMatrixを生成する関数です
my_MovieClip.transform.matrix=roll3D(傾き,軸の傾き,軸の原点)
って感じで使います
台形変形はしない(アファイン変形のMatrixクラスではできない)
ので平行投影のカンジになってしまいますが
まあPaperVision3Dとか使うほどでもないけど
ちょっとだけ3Dっぽくしたい時とかなら?
function roll3D(rot:Number=45,drc:Number=45,org:Point=null):Matrix {
var rtn:Matrix=new Matrix();
org=org||new Point()
var W=Math.cos(Math.PI/180*drc)
var H=Math.sin(Math.PI/180*drc)
var rad=Math.PI/180*rot
var D=W*H*(H/W)/(W+H*(H/W))*(1-Math.cos(rad));
with(rtn) {
a=(W-D)/W;
b=D*(W/H)/W;
c=D/H;
d=(H-D*(W/H))/H;
}
MatrixTransformer.matchInternalPointWithExternal(rtn,org,org)
return rtn;
}
多分使わないですが一応Effectクラスに追加
あと、これに限らずですけど
transform.matrixの変更は
オーサリングの変形を上書きしてしまい
このままだと原点にもどってしまうので
戻り値のMatrixをtranslateしてやるなりしてください