简单的去理解3D |
| 作者:佚名 来源:闪吧 作者: holybozo 更新:2007-1-13 20:49:09 错误报告 我要投稿 |
简单的3D 主要了解一下极坐标公式
x=Math.cos(theta)*r+x0; y=Math.sin(theta)*r+y0; | 知道以后theta不断递增就可以让mc做圆周旋转了,r是半径,x0和y0是中点坐标那么要多个mc排列好转,也比较简单,只要先把mc排列好就可以了,当然是希望等距排列啦 比如有5个mc
r=150; mcCounts=5; var i=-1; while(++i<mcCounts){ var mc=_root["mc"+i]; // 指向mc mc.angle = 2*Math.PI/mcCounts*i; // 360平分几个mc,每个mc的角度转弧度 mc._x=Math.cos(mc.angle)*r+100; mc._y=Math.sin(mc.angle)*r+100; // 排列好了,要让他们转 mc.onEnterFrame=function(){ this._x=Math.cos(this.angle)*r+100; this._y=Math.sin(this.angle)*r+100; this.angle++; } }
| 这样,就实现了一个"圆盘"的效果
[全屏欣赏] 可是动动脑子,现在的圆盘是"竖"着的,我们要放平它该怎么样呢? 就等于说,要让看到的圆盘不在是平面上的旋转,而是空间中的旋转... 空间中的旋转视觉会怎么样?? 就是离我们近的变大,离我们远的变小,就这么简单:) 再看看刚才我们旋转的圆盘,它的变化都是x方向和y方向的,如果我们把它放平,其实只不过是把x,y方向的变化,变为x方向和大小(xscale,yscale)上的变化,ok,那么我们开始变吧
mcCounts=5; r=150; var i=-1; while(++i<mcCounts){ var mc=_root["mc"+i]; // 指向mc mc.angle = 2*Math.PI/mcCounts*i; // 360平分几个mc,每个mc的角度转弧度 mc._x=Math.cos(mc.angle)*r+100; mc._y=0; mc._xscale=mc._yscale=Math.sin(mc.angle)*r+100; // 排列好了,要让他们转 mc.onEnterFrame=function(){ this._x=Math.cos(this.angle)*r+100; this._xscale=this._yscale=Math.sin(this.angle)*r+100; this.angle++; } }
| 这里有了点问题,因为把一张纸摊平的话,是不是位置就会有点变化呢,好好想一下 原来y方向上的变化是不是等于现在x方向的变化,而原来x方向上的变化成为了现在大小上的变化呢 给张图,就好理解了,了解了话,只要改变一下双方的关系就ok了
mc._x=Math.sin(mc.angle)*r+100; mc._xscale=mc._yscale=Math.cos(mc.angle)*r+100;
[全屏欣赏] 是不是很简单
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |