讓我們用Flash做3D動畫

有人會問了: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;
}


 

好了,測試一下吧!

發佈了25 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章