Sealyu

--- 博客已迁移至: http://www.sealyu.com/blog

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  618 随笔 :: 87 文章 :: 225 评论 :: 0 Trackbacks
Papervision3D实现鼠标交互的效果也比较简单,这里用上一课中的乳牛效果来实现这样的鼠标交互算法:

    代码解释

    1、这段代码只比上一课代码中新增了一个distance属性,目的是确定相机在场景中的位置不至于和对象(cow乳牛)随鼠标移动相距过大;

    2、这段代码重新修改的函数processFrame中的代码,目的是为了实现场景中的3D模型随鼠标的位置变动不断变动,从而达到鼠标交互的目的。效果最终截图如下:

    本课最终源代码如下:

 

 package
{
 
 
 import PaperBase;
 import org.papervision3d.objects.DisplayObject3D;
 import org.papervision3d.objects.parsers.Collada;
 
 public class MainMouseInteraction extends PaperBase
 {
  public var cow:DisplayObject3D;
  public var distance:Number = 1000;
  
  public function MainMouseInteraction():void
  {
   init();
  }
  override protected function init3d():void
  {
   cow = new Collada("collada/cow.dae");
   cow.moveDown(100);
   cow.scale = 3;
   cow.pitch( -30);
   default_scene.addChild(cow);
  }
  override protected function processFrame():void
  {
   default_camera.y = -(((mouseY - (stage.height/2))/stage.height) * 1600);//确定相机的y范围在800~~-800之间,即当mouseY=0时default_camera.y=800,当mouseY=stage.height时default_camera.y=-800
   default_camera.moveForward(default_camera.distanceTo(cow) - distance);//限定相机相对于cow乳牛模型不要移动到更远的地方
   cow.rotationY = -((mouseX / stage.width) * 360);//使用mouseX来控制cow乳牛Y方向旋转角度
  }
 }
}

    总结:没有过多的语句就实现了3D中的鼠标交互效果,这个效果尽管很简单~!

    本教程可自由转载,请注明转载出处,谢谢~!

posted on 2008-11-19 14:50 seal 阅读(317) 评论(0)  编辑  收藏 所属分类: Flex+ActionScript

只有注册用户登录后才能发表评论。


网站导航: