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

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

 2008-11-12 11:51:06 来源:WEB开发网   
核心提示: 这样我们就得到一个数组,包含所有我们需要的2D数据,Flash与3D编程探秘(七)- 3D物体框架(4),并不困难,你完全可以把这一段代码叫做这个程序的3D引擎, 就是把相应的小P定位到这些定点上,并且对小球进行缩放比率scale_point,它负责了所有点的数据在空间里旋转计算和输出,7

这样我们就得到一个数组,包含所有我们需要的2D数据。并不困难,你完全可以把这一段代码叫做这个程序的3D引擎,它负责了所有点的数据在空间里旋转计算和输出。

7. 下面是动画执行的循环函数。需要注意的一点,在以后的文章中我都将使用基于时间的运动。在这里你只要知道下面的公式就可以了:旋转角度=角速度X时间。使用上面的公式,我们递增物体围绕y轴和x轴的旋转角度。然后使用第6步的函数计算所有的3D顶点旋转后的位置并且得到映射后的2D点。剩下你应该能想到, 就是把相应的小P定位到这些定点上,并且对小球进行缩放比率scale_point,最后不要忘记对小P进行z排序。

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    
  
  //nowwehaveallthedataweneedtopositiontheballs
  for(vari=0;i<scene.numChildren;i++)        //loopthroughtthescene
  {
    //positioningtheball
    scene.getChildAt(i).x=projected[i].x;
    scene.getChildAt(i).y=projected[i].y;
    scene.getChildAt(i).z=projected[i].z;
    scene.getChildAt(i).scaleX=scene.getChildAt(i).scaleY=projected[i].scale_point;
  }
  
  swap_depth(scene);        //sortoutthedepth
}
//bubblesortalgo
functionswap_depth(container:Sprite)
{
  for(vari=0;i<container.numChildren-1;i++)
  {
    for(varj=container.numChildren-1;j>0;j--)
    {
      if(Object(container.getChildAt(j-1)).z<Object(container.getChildAt(j)).z)
      {
        container.swapChildren(container.getChildAt(j-1),container.getChildAt(j));
      }
    }
  }
}
//nowaddtheeventlistenerandspinthebox
this.addEventListener(Event.ENTER_FRAME,move);

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

Tags:Flash 编程 探秘

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