topical media & game development

talk show tell print

script-sandy-steve-Fps.ax

script-sandy-steve-Fps.ax (swf ) [ flash ]


  // ActionScript file
  package {
          //import mx.utils.Delegate;
          //import flash.display.BitmapData;
          import flash.events.*;
          import flash.display.*;
          import flash.ui.*;
          
          import sandy.core.data.*;
          import sandy.core.Scene3D;
          import sandy.core.scenegraph.*;
          import sandy.materials.*;
          import sandy.materials.attributes.*;
          import sandy.primitive.*;
          import sandy.util.*;
          import sandy.events.*;
          
          import flash.display.MovieClip;
          import mx.core.FlexSimpleButton;
          import flash.text.TextField;
          
          public class script-sandy-steve-Fps extends Sprite {
                  
                  private var scene:Scene3D;
                  private var camera:Camera3D;
                  private var container:MovieClip;
                  //private var maze:Maze;
                  private var ground:Plane3D;
                  private var object:Max;
                  private var app1:Appearance;
                  private var app2:Appearance;
                  private var text:TextField = new TextField();
                  
                  private var activate:Boolean = false;
                  private var start:Boolean = false;
                  
                  public function script-sandy-steve-Fps() : void {
                          init();
                          addEventListener( Event.ENTER_FRAME, loop3D );  
                  }
                  
                  private function loop3D(event:Event) : void {
                          stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseLook);
                          stage.addEventListener(KeyboardEvent.KEY_DOWN, navigate);
                          stage.addEventListener(KeyboardEvent.KEY_DOWN, keyClick);
                          object.container.addEventListener(MouseEvent.MOUSE_DOWN, mouseClick);
                          object.container.addEventListener(Event.ENTER_FRAME, objectAnimate);
                          scene.render();         
                  }
                  
                  private function init() : void {
                          camera = new Camera3D (500, 400);
                          camera.x = 0;
                          camera.z = -2000;
  
                          
                          var root:Group = createScene();
                          scene = new Scene3D("scene", this, camera, root);
                          Key.initialize(stage);
                          
                  }        
                  
                  private function createScene() : Group {
                          var g:Group = new Group();
                          //maze = new Maze("maze");
  			object = new Max ("object");
                          object.container.buttonMode = true;
                          
                          ground = new Plane3D("groundPlane", 2000, 2000, 1, 1, Plane3D.ZX_ALIGNED);
                          ground.y = -300;
                          ground.enableBackFaceCulling = true;
                          ground.enableNearClipping = true;
  
                          materials();
                          object.appearance = app1;
                          ground.appearance = app2;
  
                          g.addChild(ground);
                          g.addChild(object);
                          
                          return g;
                  }
                  
                  private function materials() : void {
                          var mat:MaterialAttributes = new MaterialAttributes (new LightAttributes (false, 0.3));
                          var material1:Material = new ColorMaterial(0x3344CC, 1, mat);
                          material1.lightingEnable = true;
                          app1 = new Appearance(material1);
                          
                          var material2:ZShaderMaterial = new ZShaderMaterial ();
                          material2.lightingEnable = true;
                          app2 = new Appearance(material2);
                  }
                  
                  private function mouseLook(event:MouseEvent) : void {
                          if (activate) {
                                  camera.pan = (event.stageX-600/2)/1;
                                     camera.tilt = (event.stageY-400/2)/6;
                          }
                  }
                  
                  private function keyClick(event:KeyboardEvent) : void {
                          if (Key.isDown(Keyboard.SPACE)) {
                                  activate = !activate;
                          }
                  }
  
                  private function navigate(event:KeyboardEvent) : void {
                          if (Key.isDown(65)) {
                                  camera.moveSideways(-20);
                          }
                          if (Key.isDown(68)) {
                                  camera.moveSideways(20);
                          }
                          if (Key.isDown(87)) {
                                  camera.moveForward(20);
                          }
                          if (Key.isDown(83)) {
                                  camera.moveForward(-20);
                          }
                  }
                  
                  private function mouseClick(event:MouseEvent) : void {
                          start = !start;
                  }
                  
                  private function objectAnimate(event:Event) : void {
                          if (start) {
                                  object.rotateY += 2;
                                  object.rotateX += 1;
                          }
                  }
                                  
  
                  
          }
  }
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.