Advertisement
Guest User

Untitled

a guest
Mar 18th, 2013
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package
  2. {
  3.     import away3d.cameras.Camera3D;
  4.     import away3d.containers.View3D;
  5.     import away3d.core.base.Geometry;
  6.     import away3d.debug.AwayStats;
  7.     import away3d.entities.Mesh;
  8.     import away3d.materials.ColorMaterial;
  9.     import away3d.materials.MaterialBase;
  10.     import away3d.primitives.CubeGeometry;
  11.     import flash.desktop.NativeApplication;
  12.     import flash.desktop.SystemIdleMode;
  13.     import flash.display.Sprite;
  14.     import flash.display.StageAlign;
  15.     import flash.display.StageScaleMode;
  16.     import flash.events.Event;
  17.     import flash.geom.Vector3D;
  18.     import flash.ui.Multitouch;
  19.     import flash.ui.MultitouchInputMode;
  20.    
  21.     /**
  22.      * ...
  23.      * @author focus | blog.codestage.ru
  24.      */
  25.     public class Main extends Sprite
  26.     {
  27.        
  28.         private const CUBES_COUNT:int = 1000;
  29.        
  30.         private var _cubes:Vector.<Mesh>;
  31.         private var _view:View3D;
  32.         private var _camera:Camera3D;
  33.        
  34.         private var _w:int;
  35.         private var _h:int;
  36.        
  37.        
  38.         public function Main():void
  39.         {
  40.             addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
  41.         }
  42.        
  43.         private function onAddedToStage(e:Event):void
  44.         {
  45.             removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
  46.            
  47.             stage.scaleMode = StageScaleMode.NO_SCALE;
  48.             stage.align = StageAlign.TOP_LEFT;
  49.            
  50.             Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
  51.             NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
  52.            
  53.             _view = new View3D();
  54.             _view.mouseChildren = false;
  55.             _view.mouseEnabled = false;
  56.             _camera = _view.camera;
  57.             addChild(_view);
  58.            
  59.             _camera.z = -100;
  60.             _camera.lookAt(new Vector3D());
  61.            
  62.             addChild(new AwayStats(_view));
  63.            
  64.             //setup the render loop
  65.             addEventListener(Event.ENTER_FRAME, _onEnterFrame);
  66.             stage.addEventListener(Event.RESIZE, onResize);
  67.             onResize();
  68.            
  69.             _generateCubes();
  70.         }
  71.        
  72.         private function _onEnterFrame(e:Event):void
  73.         {
  74.             for (var i:int = 0; i < CUBES_COUNT; i++)
  75.             {
  76.                 var cube:Mesh = _cubes[i];
  77.                 cube.rotationX++;
  78.                 cube.translate(Vector3D.X_AXIS, 0.03);
  79.                 cube.translate(Vector3D.Y_AXIS, -0.03);
  80.                
  81.                 var pos:Vector3D = cube.position;
  82.                 var screenPos:Vector3D = _view.project(pos);
  83.                
  84.                 if (screenPos.x >= _w)
  85.                 {
  86.                     cube.translate(Vector3D.X_AXIS, -pos.x*2);
  87.                 }
  88.                
  89.                 if (screenPos.y >= _h)
  90.                 {
  91.                     cube.translate(Vector3D.Y_AXIS, -pos.y*2);
  92.                 }
  93.             }
  94.            
  95.             _view.render();
  96.         }
  97.        
  98.         private function onResize(event:Event = null):void
  99.         {
  100.             _w = _view.width = stage.stageWidth;
  101.             _h = _view.height = stage.stageHeight;
  102.         }
  103.        
  104.         private function _generateCubes():void
  105.         {
  106.             _cubes = new Vector.<Mesh>(CUBES_COUNT);
  107.             var posStage:Vector3D = new Vector3D();
  108.             var pos:Vector3D = new Vector3D();
  109.             var ray:Vector3D = new Vector3D();
  110.             var material:MaterialBase = new ColorMaterial(0xFFFFFF);
  111.             var geometry:Geometry = new CubeGeometry(1, 1, 1);
  112.            
  113.             for (var i:int = 0; i < CUBES_COUNT; i++)
  114.             {
  115.                 var cube:Mesh = new Mesh(geometry, material);
  116.                 _view.scene.addChild(cube);
  117.                 cube.rotationX = cube.rotationY = cube.rotationZ = 45;
  118.                
  119.                 posStage.x = Math.random() * _w;
  120.                 posStage.y = Math.random() * _h;
  121.                
  122.                 pos = _view.unproject(posStage.x, posStage.y, 100);
  123.                
  124.                 ray.x = _camera.position.x + (pos.x - _camera.position.x);
  125.                 ray.y = _camera.position.y + (pos.y - _camera.position.y);
  126.                 ray.z = _camera.position.z + (pos.z - _camera.position.z);
  127.                
  128.                 cube.position = ray;
  129.                
  130.                 _cubes[i] = cube;
  131.             }
  132.         }
  133.     }
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement