package { import alternativa.engine3d.controllers.*; import alternativa.engine3d.core.*; import alternativa.engine3d.display.*; import alternativa.engine3d.materials.*; import alternativa.engine3d.primitives.*; import alternativa.types.*; import alternativa.utils.*; import flash.net.*; import flash.display.*; import flash.events.*; import flash.geom.*; [SWF(width="720", height="480", frameRate="60")] public class Main extends Sprite { private var scene:Scene3D; private var view:View; private var camera:Camera3D; private var cameraController:CameraController; private var wrap:Object3D; [Embed(source = "alternativa3d_big.png")] private var Logo:Class; public function Main() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; // Creating scene scene = new Scene3D(); scene.root = new Object3D(); // create box var box1:Box = Box(scene.root.addChild(new Box())); var box2:Box = Box(scene.root.addChild(new Box())); var box3:Box = Box(scene.root.addChild(new Box())); var box4:Box = Box(scene.root.addChild(new Box())); var plane:Plane = Plane(scene.root.addChild(new Plane(1000,1000))); box1.cloneMaterialToAllSurfaces(new DevMaterial()); box2.cloneMaterialToAllSurfaces(new DevMaterial()); box3.cloneMaterialToAllSurfaces(new DevMaterial()); box4.cloneMaterialToAllSurfaces(new DevMaterial()); plane.cloneMaterialToAllSurfaces(new DevMaterial()); box1.x = -100; box1.z = -100; box2.x = 100; box2.z = -100; box3.x = -100; box3.z = 100; box4.x = 100; box4.z = 100; plane.y = 50; plane.rotationX = 90 * Math.PI / 180; // Adding camera and view camera = new Camera3D(); camera.x = 0; camera.y = 0; camera.z = -300; scene.root.addChild(camera); view = new View(); addChild(view); view.camera = camera; // Connecting camera controller // 1.カメラコントローラーを初期化 引数はマウスイベントを受け取るDisplayObject cameraController = new CameraController(stage); // 2.カメラコントローラーが制御するカメラを指定 cameraController.camera = camera; // 3.キーボード操作を可能にする機能 cameraController.setDefaultBindings(); // 4.衝突したらカメラを進まなくさせるかの設定 cameraController.checkCollisions = true; // 5.衝突判定の半径(球の形で判定) cameraController.collisionRadius = 0; // 6.カメラの目標点を設定 //cameraController.lookAt(new Point3D()); // 7.カメラコントローラーの制御の設定 cameraController.controlsEnabled = true; // FPS display launch FPS.init(stage); createLogo(); stage.addEventListener(Event.RESIZE, onResize); stage.addEventListener(Event.ENTER_FRAME, onEnterFrame); onResize(null); } private function onEnterFrame(e:Event):void { // interface cameraController.processInput(); // Scene calculating scene.calculate(); } private function onResize(e:Event):void { view.width = stage.stageWidth; view.height = stage.stageHeight; // BackGround Color var bgMatrix:Matrix = new Matrix(); bgMatrix.rotate(90 * Math.PI / 180); graphics.clear() graphics.beginGradientFill("linear", [0xFFFFFF, 0x001122], [100, 100], [0, 255], bgMatrix); graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); } private function createLogo():void { var sp:Sprite = Sprite(addChild(new Sprite())); sp.addChild(new Logo()) sp.buttonMode = true; sp.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void { navigateToURL( new URLRequest("http://alternativaplatform.com/en/"), "_blank"); }) } } }