1. package
  2. {
  3. import away3dlite.containers.ObjectContainer3D;
  4. import away3dlite.core.base.Mesh;
  5. import away3dlite.core.utils.*;
  6. import away3dlite.loaders.*;
  7. import away3dlite.materials.*;
  8. import away3dlite.primitives.*;
  9. import away3dlite.templates.*;
  10. import gs.TweenMax;
  11. import gs.easing.Linear;
  12.  
  13. public class ApplicationManager extends BasicTemplate
  14. {
  15. [Embed(source="../media/terrain.3ds", mimeType="application/octet-stream")]
  16. protected static const Terrain:Class;
  17.  
  18. [Embed(source="../media/terrain.jpg")]
  19. protected static const TerrainTex:Class;
  20.  
  21. [Embed(source="../media/Messerschmitt_Bf_109.mqo", mimeType="application/octet-stream")]
  22. protected static const Plane:Class;
  23.  
  24. [Embed(source="../media/Messerschmitt_Bf_109.jpg")]
  25. protected static const PlaneTex:Class;
  26.  
  27. protected var container2:ObjectContainer3D = null;
  28. protected var terrain1:Mesh = null;
  29. protected var terrain2:Mesh = null;
  30.  
  31. override protected function onInit():void
  32. {
  33. var max3ds:Max3DS = new Max3DS();
  34. var container:ObjectContainer3D = max3ds.parseGeometry(new Terrain()) as ObjectContainer3D;
  35. terrain1 = container.getChildAt(0) as Mesh;
  36. terrain1.material = new BitmapMaterial(Cast.bitmap(TerrainTex));
  37. terrain1.rotationX = -90;
  38. terrain1.y = 500;
  39. terrain1.scaleZ = 0.5;
  40.  
  41. terrain2 = terrain1.clone() as Mesh;
  42. terrain2.z = 1000;
  43.  
  44. var mqo:MQO = new MQO();
  45. mqo.scaling = 0.4;
  46. container2 = mqo.parseGeometry(new Plane()) as ObjectContainer3D;
  47.  
  48. for each (var mesh:Mesh in container2.children)
  49. mesh.material = new BitmapMaterial(Cast.bitmap(PlaneTex));
  50.  
  51. container2.rotationY = 180;
  52. container2.y = 300;
  53. container2.z = -500;
  54.  
  55. this.camera.rotationX = -30;
  56.  
  57. scene.addChild(container2);
  58. scene.addChild(terrain1);
  59. scene.addChild(terrain2);
  60.  
  61. moveLeft();
  62. }
  63.  
  64. /**
  65. * @inheritDoc
  66. */
  67. override protected function onPreRender():void
  68. {
  69. terrain1.z -= 10;
  70. if (terrain1.z <= -1000)
  71. terrain1.z = 1000;
  72.  
  73. terrain2.z -= 10;
  74. if (terrain2.z <= -1000)
  75. terrain2.z = 1000;
  76. }
  77.  
  78. protected function moveLeft():void
  79. {
  80. TweenMax.to(container2, 4, {x:-100, ease:Linear.easeInOut, onComplete:moveRight, delay:1});
  81. TweenMax.to(container2, 2, {rotationZ:-30, ease:Linear.easeNone, yoyo:1, delay:1});
  82. }
  83.  
  84. protected function moveRight():void
  85. {
  86. TweenMax.to(container2, 4, {x:100, ease:Linear.easeInOut, onComplete:moveLeft, delay:1});
  87. TweenMax.to(container2, 2, {rotationZ:30, ease:Linear.easeNone, yoyo:1, delay:1});
  88. }
  89. }
  90. }