In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: flash on 2009-3-24

...
@author Romano (www.romano.su)
Get Adobe Flash player
by love4soul 19 Oct 2010
    Embed
package 
{
	import alternativ5.engine3d.core.Camera3D;
	import alternativ5.engine3d.core.Object3D;
	import alternativ5.engine3d.core.Scene3D;
	import alternativ5.engine3d.display.View;
	import alternativ5.engine3d.materials.FillMaterial;
	import alternativ5.engine3d.primitives.Sphere;
	import alternativ5.utils.FPS;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.navigateToURL;
	import flash.net.URLRequest;
 
	/**
	 * ...
	 * @author Romano (www.romano.su)
	 */
	public class ColorSphere extends Sprite 
	{
		private var scene:Scene3D;
		private var view:View;
		private var camera:Camera3D;
		private var sphere:Sphere;
		private var angle1:Number;
		private var angle2:Number;
 
		private var distance:Number = 300;
 
 
		public function ColorSphere():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
 
			// Создание сцены
			scene = new Scene3D();
			scene.root = new Object3D();
 
			// Добавление камеры и области вывода
			camera = new Camera3D();
			scene.root.addChild(camera);
 
			angle1 = Math.PI / 2;
			angle2 = 0;
 
			// выставляем камеру
			changeCameraCoords();
 
			view = new View();
			addChild(view);
			view.camera = camera;
			view.interactive = true;
 
			// создание сферы
			sphere = new Sphere(100, 12, 12);
			for (var i:int = 0; i < sphere.faces.length; i++) {
				var color:Number = Math.random() * 0xFFFFFF;
				sphere.createSurface([sphere.faces.toArray(true)[i].id], "temp"+i);
				sphere.setMaterialToSurface(new FillMaterial(color, 1), "temp"+i);
			}
			scene.root.addChild(sphere);
 
 
			// Запуск счётчика кадров
			FPS.init(stage);
 
			stage.addEventListener(Event.RESIZE, onResize);
			stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
 
			
 
			onResize(null);
		}
 
		private function changeCameraCoords():void
		{
			camera.x = distance * Math.sin(angle1) * Math.cos(angle2);
			camera.y = distance * Math.sin(angle1) * Math.sin(angle2);
			camera.z = distance * Math.cos(angle1);
 
			camera.rotationZ = angle2 + Math.PI/2;
			camera.rotationX = angle1 - Math.PI;
		}
 
		private function onResize(e:Event):void {
			view.width = stage.stageWidth;
			view.height = stage.stageHeight;
		}
 
		private function onEnterFrame(event:Event):void 
		{			
			angle2 += Math.PI / 180;
			changeCameraCoords();
 
			// Расчёт сцены
			scene.calculate();
		}
 
	}
 
}