/src/ProjectTest.as

https://github.com/osoker/away3d-examples-broomstick · ActionScript · 110 lines · 89 code · 18 blank · 3 comment · 0 complexity · 61765141f05e2daee918a7ae51996656 MD5 · raw file

  1. package
  2. {
  3. import away3d.containers.View3D;
  4. import away3d.lights.DirectionalLight;
  5. import away3d.lights.LightBase;
  6. import away3d.lights.PointLight;
  7. import away3d.materials.BitmapMaterial;
  8. import away3d.materials.ColorMaterial;
  9. import away3d.primitives.Cube;
  10. import away3d.primitives.Plane;
  11. import away3d.primitives.Sphere;
  12. import away3d.containers.ObjectContainer3D;
  13. import flash.display.BitmapData;
  14. import flash.display.Sprite;
  15. import flash.display.StageAlign;
  16. import flash.display.StageScaleMode;
  17. import flash.events.Event;
  18. import flash.geom.Point;
  19. import flash.geom.Vector3D;
  20. import flash.utils.getTimer;
  21. [SWF(frameRate="60", width="1024", height="576")]
  22. public class ProjectTest extends Sprite
  23. {
  24. private var _view : View3D;
  25. private var _light : PointLight;
  26. [Embed(source="../embeds/crossColor.jpg")]
  27. private var Albedo : Class;
  28. [Embed(source="../embeds/crossnrm.jpg")]
  29. private var Normals : Class;
  30. private var _camController : HoverDragController;
  31. private var _sphere : Sphere;
  32. private var _testSprite : Sprite;
  33. public function ProjectTest()
  34. {
  35. super();
  36. _view = new View3D();
  37. _camController = new HoverDragController(_view.camera, stage);
  38. _camController.radius = 500;
  39. addChild(_view);
  40. addEventListener(Event.ENTER_FRAME, handleEnterFrame);
  41. var material : BitmapMaterial = new BitmapMaterial(new Albedo().bitmapData);
  42. // material.normalMap = new Normals().bitmapData;
  43. material.ambientColor = 0x080820;
  44. material.ambient = 1;
  45. // material.specularMethod = null;
  46. material.normalMap;
  47. _sphere = new Sphere(new ColorMaterial(0xff00ff), 15);
  48. _sphere.x = -50;
  49. _sphere.y = -50;
  50. _sphere.z = -50;
  51. _view.scene.addChild(_sphere);
  52. _light = new PointLight();
  53. _light.x = -1000;
  54. _light.y = 1000;
  55. _light.z = -1000;
  56. _light.color = 0xffeeaa;
  57. _testSprite = new Sprite();
  58. _testSprite.graphics.beginFill(0xffff00);
  59. _testSprite.graphics.drawCircle(0, 0, 5);
  60. _testSprite.graphics.endFill();
  61. addChild(_testSprite);
  62. material.lights = [_light];
  63. _view.scene.addChild(_light);
  64. stage.scaleMode = StageScaleMode.NO_SCALE;
  65. stage.align = StageAlign.TOP_LEFT;
  66. stage.addEventListener(Event.RESIZE, onStageResize);
  67. }
  68. private function onStageResize(event : Event) : void
  69. {
  70. _view.width = stage.stageWidth;
  71. _view.height = stage.stageHeight;
  72. }
  73. private function handleEnterFrame(ev : Event) : void
  74. {
  75. //_ctr.rotationX = 20 * Math.sin(getTimer() * 0.002);
  76. _view.camera.x = Math.random()*5000;
  77. _view.camera.y = Math.random()*5000;
  78. _view.camera.z = Math.random()*5000;
  79. _view.camera.rotationX = Math.random()*6;
  80. _view.camera.rotationY = Math.random()*6;
  81. _view.camera.rotationZ = Math.random()*6;
  82. var v : Vector3D = _view.unproject(_view.mouseX, _view.mouseY);
  83. _sphere.x = _view.camera.x+(v.x-_view.camera.x)*20;
  84. _sphere.y = _view.camera.y+(v.y-_view.camera.y)*20;
  85. _sphere.z = _view.camera.z+(v.z-_view.camera.z)*20;
  86. var p : Point = _view.project(_sphere.scenePosition);
  87. _testSprite.x = p.x;
  88. _testSprite.y = p.y;
  89. _view.render();
  90. }
  91. }
  92. }