Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package
- {
- import away3d.cameras.Camera3D;
- import away3d.containers.View3D;
- import away3d.core.base.Geometry;
- import away3d.debug.AwayStats;
- import away3d.entities.Mesh;
- import away3d.materials.ColorMaterial;
- import away3d.materials.MaterialBase;
- import away3d.primitives.CubeGeometry;
- import flash.desktop.NativeApplication;
- import flash.desktop.SystemIdleMode;
- import flash.display.Sprite;
- import flash.display.StageAlign;
- import flash.display.StageScaleMode;
- import flash.events.Event;
- import flash.geom.Vector3D;
- import flash.ui.Multitouch;
- import flash.ui.MultitouchInputMode;
- /**
- * ...
- * @author focus | blog.codestage.ru
- */
- public class Main extends Sprite
- {
- private const CUBES_COUNT:int = 1000;
- private var _cubes:Vector.<Mesh>;
- private var _view:View3D;
- private var _camera:Camera3D;
- private var _w:int;
- private var _h:int;
- public function Main():void
- {
- addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
- }
- private function onAddedToStage(e:Event):void
- {
- removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.align = StageAlign.TOP_LEFT;
- Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
- NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
- _view = new View3D();
- _view.mouseChildren = false;
- _view.mouseEnabled = false;
- _camera = _view.camera;
- addChild(_view);
- _camera.z = -100;
- _camera.lookAt(new Vector3D());
- addChild(new AwayStats(_view));
- //setup the render loop
- addEventListener(Event.ENTER_FRAME, _onEnterFrame);
- stage.addEventListener(Event.RESIZE, onResize);
- onResize();
- _generateCubes();
- }
- private function _onEnterFrame(e:Event):void
- {
- for (var i:int = 0; i < CUBES_COUNT; i++)
- {
- var cube:Mesh = _cubes[i];
- cube.rotationX++;
- cube.translate(Vector3D.X_AXIS, 0.03);
- cube.translate(Vector3D.Y_AXIS, -0.03);
- var pos:Vector3D = cube.position;
- var screenPos:Vector3D = _view.project(pos);
- if (screenPos.x >= _w)
- {
- cube.translate(Vector3D.X_AXIS, -pos.x*2);
- }
- if (screenPos.y >= _h)
- {
- cube.translate(Vector3D.Y_AXIS, -pos.y*2);
- }
- }
- _view.render();
- }
- private function onResize(event:Event = null):void
- {
- _w = _view.width = stage.stageWidth;
- _h = _view.height = stage.stageHeight;
- }
- private function _generateCubes():void
- {
- _cubes = new Vector.<Mesh>(CUBES_COUNT);
- var posStage:Vector3D = new Vector3D();
- var pos:Vector3D = new Vector3D();
- var ray:Vector3D = new Vector3D();
- var material:MaterialBase = new ColorMaterial(0xFFFFFF);
- var geometry:Geometry = new CubeGeometry(1, 1, 1);
- for (var i:int = 0; i < CUBES_COUNT; i++)
- {
- var cube:Mesh = new Mesh(geometry, material);
- _view.scene.addChild(cube);
- cube.rotationX = cube.rotationY = cube.rotationZ = 45;
- posStage.x = Math.random() * _w;
- posStage.y = Math.random() * _h;
- pos = _view.unproject(posStage.x, posStage.y, 100);
- ray.x = _camera.position.x + (pos.x - _camera.position.x);
- ray.y = _camera.position.y + (pos.y - _camera.position.y);
- ray.z = _camera.position.z + (pos.z - _camera.position.z);
- cube.position = ray;
- _cubes[i] = cube;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement