Flash与3D编程探秘(七)- 3D物体框架
2008-11-12 11:51:06 来源:WEB开发网注意
例子中物体沿着x和y轴旋转,但是并没有添加z轴旋转,你可以自己添加上,看看有什么不同。
注意
例子中我们使用了两个for loop,第一次遍历所有的顶点把3D点转化为2D点,第二个把相应的小P定位到这些2D点的位置。虽然这样看起来会降低执行速度,但是这样会使程序的流程一目了然。如果你已经非常熟练,你可以试着修改这两个函数提高执行速度。
使用Flash绘制API
上面的例子看起来不错,不过只有顶点有小球,我们看起来还不满意,那么接下来做一个动态绘制的正方体。这个例子里,基本的框架并没有什么变化,正方体所有的边都是用Flash的moveTo()和lineTo()来绘制。那么我就把需要更改代码的地方解释一下。
一个正方体的框架
制作步骤
1. 基本上的代码和前面是一样的,同样我们需要设置场景,创建正方体的顶点,注意不要再在舞台上添加小P。
2. 当我们把3D点映射到2D平面上后,我们使用黑线把正方体相邻的两个点连接起来。非常容易理解,不过注意我们有很多种办法连接这些点,你可以先连接正方体顶面的点,然后底面的点,最后连接顶面和底面。当然还有很多连接方法,你总能找到合适你思维方式的连接方式。
functionmove(e:Event):void
{
//wellweusetimebasedmovementinthistutorial
varcurrent_time=newDate().getTime(); //sampethecurrenttime
//incrementtherotationaroundyaxis
axis_rotation.y+=0.0008*(current_time-start_time);
//incrementtherotationaroundxaxis
axis_rotation.x+=0.0006*(current_time-start_time);
start_time=current_time; //resetthestarttime
varprojected=project_pts(points); //3dpontsto2dtransformation
//nowwestartdrawingthecube
with(scene.graphics)
{
clear();
lineStyle(0.5,0x0F6F9F,1);
//topface
moveTo(projected[0].x,projected[0].y);
lineTo(projected[1].x,projected[1].y);
lineTo(projected[2].x,projected[2].y);
lineTo(projected[3].x,projected[3].y);
lineTo(projected[0].x,projected[0].y);
//bottomface
moveTo(projected[4].x,projected[4].y);
lineTo(projected[5].x,projected[5].y);
lineTo(projected[6].x,projected[6].y);
lineTo(projected[7].x,projected[7].y);
lineTo(projected[4].x,projected[4].y);
//verticallines
moveTo(projected[0].x,projected[0].y);
lineTo(projected[4].x,projected[4].y);
moveTo(projected[1].x,projected[1].y);
lineTo(projected[5].x,projected[5].y);
moveTo(projected[2].x,projected[2].y);
lineTo(projected[6].x,projected[6].y);
moveTo(projected[3].x,projected[3].y);
lineTo(projected[7].x,projected[7].y);
}
}
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接