WEB开发网
开发学院图形图像Flash Flash与3D编程探秘(六)- 全方位旋转摄像机 阅读

Flash与3D编程探秘(六)- 全方位旋转摄像机

 2008-11-12 11:51:10 来源:WEB开发网   
核心提示: //constantsvarMAX_OBJ= 6;varPI=3.1415926535897932384626433832795;varCUBE_WIDTH=300;2. 下面还是设置原点,场景,Flash与3D编程探秘(六)- 全方位旋转摄像机(4),焦距等,//sameasusualv

//constants
varMAX_OBJ= 6;
varPI=3.1415926535897932384626433832795;
varCUBE_WIDTH=300;

2. 下面还是设置原点,场景,焦距等。

//sameasusual
varorigin=newObject();
origin.x=stage.stageWidth/2;
origin.y=stage.stageHeight/2;
origin.z=0;
varscene=newSprite();
scene.x=origin.x;
scene.y=origin.y;
this.addChild(scene);
varfocal_length= 400;

3. 设置摄像机,这回我们的摄像机多了几个新的属性,pitching是纵向旋转角度,tilt是倾斜的角度。

varcamera=newObject();
camera.x=0;
camera.y=0;
camera.z=0;
camera.panning=-PI/8;        //initpanangleofourcamera,panleft
camera.pitching=-PI/8;        //pitchup
camera.tilt=0;              //andnotilt

4. 设置一些全局变量,在我们处理键盘和鼠标事件时会用到。

//globalbooleansforourkeyboardcontrol
varpan_left;
varpan_right;
varpitch_up;
varpitch_down;
varmouse_ctl=true;

5. 下面我们步置一个正方体,你完全不必要明白我是怎么布置场景的,因为布置场景的方式并不唯一,所以如果你愿意的话,你可以自己动手布置3D场景,当然我也不介意直接拷贝我的设置场景的代码去用。总之,这些代码就是初始化一些小P,然后把它们摆放在合适位置(围绕着我们的摄像机)。

//ok,hereyoudon'thavetoknowhowiacutallysetupthecube
//causeeverybodyhasadifferentwayofdoingthat,ifyoureally
//interestedinhowididit,thenyoumayhavealook
//youcanjustcopymycodeanditwillsetitupforyou
varlen=CUBE_WIDTH/2;
for(varseg=0;seg<3;seg++)
{
  varline_h;
  varline_v;  
  varline_z;
  
  switch(seg)
  {
    case0:
      line_h=true;
      line_v=false;
      line_z=false;
      break;
    case1:
      line_h=false;
      line_v=true;
      line_z=false;
      break;
    case2:
      line_h=false;
      line_v=false;
      line_z=true;
      break;
  }
  
  for(vari=0;i<MAX_OBJ;i++)
  {
    if(line_h||(i==0||i==MAX_OBJ-1))
    {
      for(varj=0;j<MAX_OBJ;j++)
      {
        if(line_v||(j==0||j==MAX_OBJ-1))
        {
          for(vark=0;k<MAX_OBJ;k++)
          {
            if(line_z||(k==0||k==MAX_OBJ-1))
            {
              varball;
              if(line_h)
              {
                ball=newSphereHorizontal();
                if((i==0||i==MAX_OBJ-1))
                {
                  ball=newSphereVertex();
                }
                else
                {
                  ball=newSphereHorizontal();
                }
              }
              if(line_v)
              {
                ball=newSphereVertical();
                if((j==0||j==MAX_OBJ-1))
                {
                  continue;
                }
              }
              if(line_z)
              {
                ball=newSphereStraight();
                if((k==0||k==MAX_OBJ-1))
                {
                  continue;
                }
              }
              ball.x_3d=-len+(i)*(CUBE_WIDTH/MAX_OBJ);
              ball.y_3d=-len+(j)*(CUBE_WIDTH/MAX_OBJ);
              ball.z_3d=-len+(k)*(CUBE_WIDTH/MAX_OBJ);
              scene.addChild(ball);
            }
          }
        }
      }
    }
  }
}

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

Tags:Flash 编程 探秘

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