Re: [問題] 請問一下??
看到這篇文章 我也才開始研究起來flash 3D (好像有點晚XD)
網頁上面的解說是寫得滿清楚
不過我測試完也跟你一樣
我發現好像有幾個地方有問題
//一開始的Transform3DPointsTo2DPoints函數
Transform3DPointsTo2DPoints = function (points, rotations) {
var myArray = [];
var sx = Math.sin(rotations.x);
var cx = Math.cos(rotations.x);
var sy = Math.sin(rotations.y);
var cy = Math.cos(rotations.y);
var sz = Math.sin(rotations.z);
var cz = Math.cos(rotations.z);
var x, y, z, xy, xz, yx, yz, zx, zy, ratio;
var i = points.length;
while (i--) {
x = points[i].x;
y = points[i].y;
z = points[i].z;
//這邊的points參數是陣列 所以加上[i]
//讓他判斷pointsArray各點的坐標
xy = cx*y-sx*z;
xz = sx*y+cx*z;
yz = cy*xz-sy*x;
yx = sy*xz+cy*x;
zx = cz*yx-sz*xy;
zy = sz*yx+cz*xy;
ratio = d/(d+yz);
x = zx*ratio;
y = zy*ratio;
z = yz;
myArray.push(make2DPoint(x, y, -z, ratio));
//原來的 myArray = make2DPoint(x, y, -z, ratio); 改掉
//將這些新的2D參數以物件型式放入myArray陣列
}
return myArray;
};
//最後面的執行
Scene.onEnterFrame = function() {
myRotations.y -= this._xmouse/2000;
myRotations.x += this._ymouse/2000;
var screenPoints:Array = Transform3DPointsTo2DPoints(pointsArray,
myRotations);
for (i=0; i<pointsArray.length; i++) {
myball = this["ball"+i];
myball._x = screenPoints[i].x;
myball._y = screenPoints[i].y;
myball._xscale = myball._yscale=100*screenPoints[i].ratio;
myball.swapDepths(screenPoints[i].depth);
//screenPoints是一個陣列 所以用迴圈判斷各個陣列的值
}
};
黃色的地方改完以後
應該就可以正常執行了
ps.記得要製作一個"ball"的MovieClip匯出給AS共用
※ 引述《Godkiller (crush on elisha... )》之銘言:
: : 可能是命名qiu這個部份錯囉
: : 是要命名在mc元件上(點球再命名)
: : 如果是按F8然後打的名字
: : 是在元件庫裡的名字,不是元件的名稱喔!
: : PS1:把目前做出來的檔案上傳後放連結會比較方便解答喔
: : PS2:那一頁的解說上有一行少了一個"/",直接貼會出錯XD
: 謝謝這位大大的協助
: 之前的問題我已經解決了
: 但目前又有新的問題出現。
: 我在個網頁上http://www.5uflash.com/Html/bctl/191407434.html
: 找到了類似也是立方體旋轉的code
: 其中我複製它某斷code:
: this.createEmptyMovieClip("Scene", 1);
: Scene._x = 150;
: Scene._y = 150;
: d = 300;//眼睛和屏幕之間的距离,試者調整看有什么變化
: ~~~~~~~~~~~~~~~以下code省略~~~~~~~~
: 將以上這段程式貼在我場景第一個frame的actions裡
: 然後我在我的library裡加了一個名稱叫 " ball " 的mc(一顆小球)
: 在右邊library視窗的 ball上 滑鼠右鍵
: 點選linkage properties 將 Export for ActionScript的選項打勾
: crtl+enter後,只有一個動都不動的小球。
: 這次不知道我又遇到什麼問題了??
: 如果上述程式碼,我只想做對某一軸的轉動(ex.對x軸轉動)
: 而不是讓滑鼠控制它怎麼轉,那段編碼最後要怎麼改?
: 感覺flash的as怎麼比我之前學的c還是fortran來的難阿?? 哀~~~
: 總之還是先謝謝各位了~~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.162.95.139
推
03/16 01:16, , 1F
03/16 01:16, 1F
討論串 (同標題文章)