作者Alutima (鸭卤蹄马)
看板Flash
标题Re: [问题] 请问一下??
时间Sat Mar 15 23:30:03 2008
看到这篇文章 我也才开始研究起来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
1F:推 Godkiller:谢谢你的指教 帮助我太大了 03/16 01:16