让我们用Flash做3D动画

    技术2022-05-11  117

    有人会问了:Flash在开发之初为了减小播放器的体积,并没有设置关于3D方面的应用.其实不然,所有的3D效果其实都是二维图形通过3D算法得出的.

    下面让我们通过3D算法来做一个简单的3D导航.

    1.新建一个按钮实例,将其在库中的链接命名为"text"

    2.在按钮实例的第一帧输入如下代码:

     

    //  设定角度和弧度变量 var  radian:Number  =   0 ; //  圆心座标(x和z的中心点) var  centerX:Number  =  Stage.width / 2 - 40 ; var  centerY:Number  =  Stage.height / 2 - 20 ; // var  r:Number  =   100 ; // 半径值 var  z:Number; // z轴值(公式里的d2) var  d1:Number  =   50 ; // 眼睛到屏幕的距离 var  scale:Number; // 透视缩放比率 var  y:Number; // var  rotation:Number  =   0 ; // 当前旋转的角度 function  onEnterFrame()  {    degree += _root.speed;    // 换算成弧度    radian = degree*(Math.PI/180);    // 求出x, z'值    this._x = Math.cos(radian)*r+centerX;    z = Math.sin(radian)*r+this._parent.centerZ;    scale = d1/(d1+z);    this._y = y*scale+centerY;    this._xscale = scale*100;    this._yscale = scale*100;    this._alpha = scale*100;    ////    //切换深度    if (scale>0.8{        this.swapDepths(20);        this.enabled = true;        this.k.enabled = true;    } else {        this.swapDepths(this.defaultDep);        this.enabled = false;        this.k.enabled = false;    }} this .onMouseMove  =   function ()  {    y = (centerY-_root._ymouse)/3;} ;

     

    4.在时间轴第一帧输入以下代码

     

    var  speed:Number  =   4 ; var  center:Number  =  Stage.width / 2 ; var  maxSpeed:Number  =   6 ; var  unit:Number  =  center / maxSpeed; // var  centerZ:Number  =   90 ; // for  ( var  i  =   0 ; i < 6 ; i ++ {    this.attachMovie("text""t"+i, i+10);    this["t"+i].degree = i*60;    this["t"+i].defaultDep = i+10;    this["t"+i]._y = Stage.height/2;} function  onMouseMove()  {    speed = Math.round((_xmouse-center)/unit)*-1;}

     

    好了,测试一下吧!


    最新回复(0)