`
cev773wq
  • 浏览: 14580 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

[AS3] Alternavta3d7.5教程(一)

 
阅读更多

[AS3] Alternavta3d7.5教程(一)
2010年12月30日
  "Molehill"来袭,大家都准备好了吗?Flashplayer11的GPU支持将改变整个Flash平台的开发。
  Alternavta3d是目前最好的Flash平台3D引擎,最新版本是7.5.1,虽然下一个版本8还没放出,但由于跟原来5.6的版本差异很大,跟8应该相差不大了。
  Alternavta3d由于不是开源的,网上教程比较少,我会陆续更新Alternavta3d7.5系列教程。
  Hello, Alternativa3D
  这是我的第一个Alternativa3D例子  
  
  打开演示
  整个例子非常简单,有几点需要注意:
  1. wireMaterial和colorMaterial都是通过FillMaterial创建的,区别只是在参数的设定上。
  2. flash运行的状态数据(如FPS,MEM等)可以通过addChild(camera.diagram)来显示。
  3. 不像pv3d有一个scene,将3D对象放到场景可以用addChild Object3DContainer,或使用BSPContainer来实现。 复制内容到剪贴板
  代码:
  /**
  * Engine:Alternativa3D7.5.1
  * Author:Mars Yang
  * Link:http://www.marsyang.com/blog/archives/85
  */
  package
  {
  import alternativa.engine3d.core.Camera3D;
  import alternativa.engine3d.core.Object3DContainer;
  import alternativa.engine3d.core.View;
  import alternativa.engine3d.materials.FillMaterial;
  import alternativa.engine3d.primitives.Plane;
  import alternativa.engine3d.primitives.Sphere;
  import flash.display.Sprite;
  import flash.events.Event;
  [SWF(backgroundColor="#000000", frameRate="100")]
  public class Example0 extends Sprite
  {
  private var rootContainer:Object3DContainer = new Object3DContainer();
  private var camera:Camera3D;
  private var plane:Plane;
  private var sphere:Sphere;
  private var wireMaterial:FillMaterial = new FillMaterial(0, 0, 0, 0xffffff);
  private var colorMaterial:FillMaterial = new FillMaterial(0xff0000, 1, 0, 0xffffff);
  public function Example0()
  {
  addEventListener(Event.ADDED_TO_STAGE, init);
  }
  public function init(e:Event): void
  {
  removeEventListener(Event.ADDED_TO_STAGE, init);
  //create camera & view
  camera = new Camera3D();
  camera.view = new View(stage.stageWidth, stage.stageHeight);
  addChild(camera.view);
  addChild(camera.diagram);
  camera.rotationX = -120*Math.PI/180;
  camera.y = -150;
  camera.z = 100;
  rootContainer.addChild(camera);
  //create object3d
  plane = new Plane(200, 60);
  plane.setMaterialToAllFaces(colorMaterial);
  rootContainer.addChild(plane);
  sphere = new Sphere(50);
  sphere.y = 100;
  sphere.setMaterialToAllFaces(wireMaterial);
  rootContainer.addChild(sphere);
  camera.render();
  stage.addEventListener(Event.RESIZE, onResize);
  }
  private function onResize(e:Event):void {
  camera.view.width = stage.stageWidth;
  camera.view.height = stage.stageHeight;
  camera.render();
  }
  }
  }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics