topical media & game development
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.