有人會問了: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 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;
}
好了,測試一下吧!