从球形绳的制作学习简单三维(下) |
| 作者:佚名 来源:闪吧 作者: 筑长城 更新:2007-1-13 20:46:13 错误报告 我要投稿 |
接上一帖的内容
dispbbs.asp?boardID=49&ID=236734&page=2
C.移动视点
到此为止,我们已经讨论了移动对象本身,现在让我们看一下怎样才能移动整个视图以使得用户的透视图看起来在运动,并且对象保持固定,而不是用户保持固定而对象在移动.
元件:一个40*40的球形,链接名:sphere
在主场景第一帧代码如下:
//xoff,yoff,zoff用来确定我们观察者所处的位置. xoff=0; yoff=0; zoff=0; d=1000; centerX=275; centerY=200; ang=0; function project() { if((this.z-zoff)<40) { this._visible=false; } else { this._visible=true; var zfactor=d/(this.z-zoff); this._x=(this.x-xoff)*zfactor+centerX;//在上一个效果中公式中少了一个xoff,因为现在的球位置都是相对于观察者的. this._y=(this.y-yoff)*zfactor+centerY;
this._xscale=100*zfactor; this._yscale=100*zfactor;
this.swapDepths(Math.floor(100000-(this.z-zoff)));//让近的球摆在上面. } } //接下来用于生成小球.... for(var i=0;i<40;i++) { var nm="sphere"+i; _root.attachMovie("sphere",nm,i);
_root[nm].x=Math.cos(ang)*200; ang+=0.2; _root[nm].y=100+Math.cos(i/3)*100;
_root[nm].z=(i*50)+d; _root[nm].project=project;
_root[nm].onEnterFrame=project; } //建一个侦听器,侦听鼠标的活动. mouseListener=new Object(); mouseListener.onMouseWheel=function(diff) { zoff+=(diff*50) } mouseListener.onMouseMove=function() { xoff=_xmouse-centerX; yoff=_ymouse-centerY; } Mouse.addListener(mouseListener);
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |