Scalefrom 中制作3D旋转UI的方法

 本文章完全使用矩阵来操作旋转:
首先,我们必须打开矩阵变量:_matrix3d ( 长度为16的数组 )
_global.gfxExtensions = true;
Tween.init();

其次,添加在制作过程中会用到的函数:(本人只添加3个)
//--------------------------------------------------------------------------------------------------
public function RotateMatrix(Angle:Number ,Type:Number):Array
{
Angle = (Angle*3.14)/180;
var matrixC:Array = null;
switch( Type )
{
case 1:// 绕X周转
matrixC = [1 , 0 ,    0, 0,
    0 , Math.cos(Angle)  , Math.sin(Angle),  0,
     0 , -Math.sin(Angle) , Math.cos(Angle),  0,
   0 ,      0,     0, 1];
break;
case 2:// 绕Y轴转
matrixC = [ Math.cos(Angle),0, -Math.sin(Angle), 0,
0 , 1, 0 , 0,
       Math.sin(Angle),0, Math.cos(Angle), 0,
     0 , 0, 0 , 1];
break;
case 3:// 绕Z轴转
matrixC = [ Math.cos(Angle) , Math.sin(Angle),0 ,0,
        -Math.sin(Angle), Math.cos(Angle),0 ,0,
0 , 0 , 1 ,0,
   0 ,  0,  0 ,1];
break;
}
return matrixC;
}
//--------------------------------------------------------------------------------------------------
public function TranslationMatrix(tX:Number, tY:Number, tZ:Number):Array
{
var matrixC:Array = [ 1, 0, 0, 0,
     0, 1, 0, 0,
     0, 0, 1, 0,
     tX,tY,tZ,1];
return matrixC;
}
//--------------------------------------------------------------------------------------------------
public function MultiplyMatrix(mA:Array , mB:Array ):Array
{
var matrixC:Array = new Array();
for( var i:Number = 0 ; i < 4;i++ )
{
for ( var k:Number =0; k < 4;k++ )
{
var num:Number = 0;
for( var j:Number = i; j < i + 4;j++ )
{
num += mA[i*3 + j]*mB[(j-i)*4 + k];
}
matrixC.push(num);
}
}
return matrixC;
}
最后:使用以上函数进行各种操作,
(例如一个MovieClip对象 :this["SelectPannel"])
绕 x轴旋转:
this["SelectPannel"]._matrix3d = RotateMatrix(30 ,1);
绕 y轴旋转:
this["SelectPannel"]._matrix3d = RotateMatrix(30 ,2);
绕 x,y轴旋转:
this["SelectPannel"]._matrix3d =MultiplyMatrix ( RotateMatrix(30 ,1), RotateMatrix(30 ,1) );
沿x轴平移500个单位,绕x轴旋转30度
this["SelectPannel"]._matrix3d = MultiplyMatrix( TranslationMatrix(500 ,0, 0), RotateMatrix(30 ,1) );


以上就可以制作很多旋转平移的操作了,淡然还有很多种方法,比如给控件添加旋转变量,只需设置旋转的角度即可。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值