WEB开发网
开发学院图形图像Flash Flash与3D编程探秘(七)- 3D物体框架 阅读

Flash与3D编程探秘(七)- 3D物体框架

 2008-11-12 11:51:06 来源:WEB开发网   
核心提示: 注意 例子中物体沿着x和y轴旋转,但是并没有添加z轴旋转,Flash与3D编程探秘(七)- 3D物体框架(5),你可以自己添加上,看看有什么不同,最后连接顶面和底面,当然还有很多连接方法,注意 例子中我们使用了两个for loop,第一次遍历所有的顶点把3D点转化为2D点

注意

例子中物体沿着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);
  }
}

上一页  1 2 3 4 5 6  下一页

Tags:Flash 编程 探秘

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接