zerO

纪念我所怀念的一切.

« 开卷语---记zerO3D开源zerO粒子系统实例 »
2009-1-24 21:27:53 | 发布:linfuqing | 分类:zerO3d | 评论:2 | 引用:0 | 浏览:

zerO模型实例

http://linfuqing.wsu.wsu.cn/zerO/Buildmodel.swf

/**
 * Copyright 2009 (c) Lin Fuqing,zerO3D
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
**/

package
{
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.KeyboardEvent;
 import flash.ui.Keyboard;
 
 import zerO.geom.Geometry;
 import zerO.geom.basegeometry.Cube;
 import zerO.geom.basegeometry.Cylinder;
 import zerO.objects.DAE;
 import zerO.objects.Track;
 import zerO.render.Zsort;
 import zerO.scenes.Scene3D;
 import zerO.veiw.Camera3D;
 import zerO.veiw.Viewport3D;
 
 //[SWF(frameRate=100, backgroundColor=0xffffff)]
 public class BuildModel extends Sprite
 {
  //追踪,可以不用,为懒人开发的类
  private var track:Track;
  
  //视口,必须
  private var viewport:Viewport3D;
  
  //场景,必须
  private var scene:Scene3D;
  
  //渲染器,必须,Zsort,我的最爱
  private var render:Zsort;
  
  //定义一个凌锥和一个正方体
  private var a:Cylinder = new Cylinder();
  private var b:Cube = new Cube();
  
  //定义相机,可以不用
  private var camera:Camera3D = new Camera3D();
  
  //定义一个DAE
  private var dae:DAE;
  
  /**
   * 模型实例
   */
  public function BuildModel()
  {
   //追踪需要穿最上层的精灵上去
   track = new Track( this );
   
   //DAE,参数分别是DAE地址,图片目录(地址自动找),是否平滑处理,这个汽车是Flash3D研究所的东西,抱歉先拿来用了
   dae = new DAE( "texture/car.XML","texture" );
   
   //设置DAE缩放,可以不用
   dae.scale = 10;
   
   //监听DAE读取
   dae.addEventListener( Event.COMPLETE,onComplete );
   
   //监听键盘事件,控制相机方向键对应上下左右移动
   stage.addEventListener( KeyboardEvent.KEY_DOWN,onKeyDown );
  }
  
  /**
   * 读取完成,监听祯并初始化
   */   
  private function onComplete( event:Event ):void
  {
   addEventListener( Event.ENTER_FRAME,onEnterFrame );
   init();
  }
  
  /**
   * 初始化
   */
  private function init():void
  {
   //创建新场景
   scene = new Scene3D();
   
   //设置几何体位置(默认为(0,0,0))
   b.x = 200;
   b.z = 200;
   a.y = 500;
   
   //将几何体加到场景中,一定记得加
   scene.add( a );
   scene.add( b );
   
   //从DAE中读取几何体,读取的名字就是你从3DMAX阿什么的读进来的名字
   var geometry:Geometry = dae.getChildByName( "MeshShape" ).geometry;
   
   //加到场景中
   scene.add( geometry );
   
   //创建新视口,参数是视口宽度,高度和场景,这里设置为舞台宽高
   viewport = new Viewport3D( stage.stageWidth,stage.stageHeight,scene );
   
   //创建渲染器,参数为视口
   render = new Zsort( viewport );
   
   //一定要记得将视口加到显示清单中
   addChild( viewport );
   
   //设置相机,后面还有一个参数是相机切换插值,设置后可做出很华丽的动画
   viewport.onCamera( camera );
   
   //将模型加到场景完成后请build一下,谢谢
   scene.build();
  }
  
  /**
   * 开始
   */
  private function onEnterFrame( event:Event ):void
  {
   //相机真实方向追踪...玩过CS或者看一下效果就知道了,不必须,可以直接设置相机方向.
   track.cameraTrueDirection( camera );
   
   //旋转几何体
   a.rotationY +=1;
   b.rotationY +=1;
   
   //渲染器渲染
   render.render();
  }
  
  /**
   * 键盘监听,略过
   */
  private function onKeyDown( event:KeyboardEvent ):void
  {
   switch( event.keyCode)
   {
    case Keyboard.UP:
    camera.y -= 50;
    break;
    
    case Keyboard.DOWN:
    camera.y += 50;
    break;
    
    case Keyboard.LEFT:
    camera.x -= 50;
    break;
    
    case Keyboard.RIGHT:
    camera.x += 50;
    break;
    
    default:
    break;
   }
   
  }

 }
}

  • quote 1.ryan
  • 1084: 语法错误: identifier 应在 lessthan 之前。
    点异常后:
    var commands:Vector.<int> = new Vector.<int>(3,true);


    这是为什么啊........?
    linfuqing 于 2009-3-26 11:49:52 回复
    请使用Flash Player10进行编译。
  • 2009-3-24 14:44:48 回复该留言
  • quote 2.yudona
  • 为什么我出现很多未定义属性...
    我1.2 跟 1.3 版本都试过啦
    都这样
    linfuqing 于 2009-9-23 11:49:58 回复
    请使用Flash CS4或者Flex SDK3.2以上作为编译器
  • 2009-9-18 1:03:24 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

最新评论及回复

友情链接

[Top] Powered By Z-Blog 1.8 Arwen Build 81206. Theme FormerDays Design By haphic

[-Do U rmAmb al _LEAVEs_ Missing UnderTheTree-]
All by 怀念从前.