SHARE
TWEET

Untitled

a guest Mar 18th, 2013 171 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. }
RAW Paste Data
Challenge yourself this year...
Learn something new in 2017
Top