Hi!Whit my friend have started to develop 3d game with away3d for
school topic and we cannot deal with the animations.I am loading two
md2 models- the ogre from the lessons, then in onKeyDown it is
registered where to move in boolean variables , in onKeyUp is
deregistered, and in onEnterFrame this variables  are checked in if
forward is true it plays the run animation else play the stand.The
game plays the run animation once and then cannot change to stand.Any
suggestions? onkeyDown and onKeyUp are down, just scroll.Also there
are two extern files for Terrain and Resources,but they are not
related:

package
{
        import away3d.animators.data.*;
        import away3d.cameras.*;
        import away3d.containers.*;
        import away3d.core.base.*;
        import away3d.core.clip.*;
        import away3d.core.filter.*;
        import away3d.core.math.*;
        import away3d.core.render.*;
        import away3d.core.utils.*;
        import away3d.events.*;
        import away3d.lights.*;
        import away3d.loaders.*;
        import away3d.materials.*;
        import away3d.materials.utils.*;
        import away3d.primitives.*;

        import flash.display.*;
        import flash.events.*;
        import flash.filters.*;
        import flash.ui.Keyboard;

        import wumedia.vector.VectorText;
        [SWF(backgroundColor="#000000", frameRate="30", quality="LOW",
width="800", height="600")]

        public class Game extends Sprite
        {

                [Embed (source="../fonts/extrusionfonts.swf", 
mimeType="application/
octet-stream")]
                public static const Fonts:Class;
                private var textfield:TextField3D;

                //engine variables
        public var scene:Scene3D;
                public var camera:SpringCam;
                public var view:View3D;
                public var skybox:Skybox6;
                public var frustum_clipping:FrustumClipping;
                public var nearfield_clipping:NearfieldClipping;


                //scene objects
                private var md2:Md2;
                private var md22:Md2;
                private var model:Mesh;
                private var model2:Mesh;
                private var isModelMoving:Boolean;

                //movement
                private var moving:Boolean = false;
                private var forward:Boolean = false;
                private var backward:Boolean = false;
                private var turnLeft:Boolean = false;
                private var turnRight:Boolean = false;
                private var stillMoving:Boolean = false;
                private var jump:Boolean = false;
                private var count:int = 0;

                public var res:Resources;
                public var terrain:Terrain;

                //lights
                public var simpleShadow:SimpleShadow;

                public var sunLight:DirectionalLight3D;

                public function Game()
                {
                        addEventListener(Event.ADDED_TO_STAGE, init);
                }

                private function init(evt:Event):void
                {
                        res = new Resources();
                        initEngine();
                        terrain = new Terrain();
                        initObjects();
                        initListeners();

                }

                private function initEngine():void
                {
                        scene = new Scene3D();

                        frustum_clipping = new FrustumClipping();
                        frustum_clipping.minZ = -50;
                        frustum_clipping.maxZ = 400;

                        nearfield_clipping = new NearfieldClipping();
                        view = new View3D();
                        view.scene = scene;
                        view.clipping = frustum_clipping;
                        //view.camera = camera;

                        /*var fogColour:ColorMaterial = new 
ColorMaterial(0x002222);
                        var renderer:BasicRenderer = (view.renderer as 
BasicRenderer);
                        var mfilters:Array = [new 
FogFilter({minZ:100,maxZ:500,subdivisions:
20,material:fogColour})];
                        renderer.filters = mfilters;*/

                        addChild(view);

                        //sunLight = new DirectionalLight3D();
                        //sunLight.direction = new Number3D(0, -1, 0);
                        //sunLight.ambient = 20;
                        //sunLight.diffuse = 40;
                        //sunLight.specular = 300;
                        //sunLight.brightness = 100;
                        //sunLight = new PointLight3D( { x:0, y:-1, z: 0, 
brightness:1000,
ambient:0.1, diffuse:0.7 } );
            //scene.addLight(sunLight);


                        VectorText.extractFont(new Fonts(),null,false);

                }



                private function initObjects():void
                {
                        //model = Md2.parse(OgreMesh, {material:material}) as 
Mesh;

                        //glowFilter = new GlowFilter();
                        //blurFilter = new BlurFilter();
                        //model.addOnMouseOver(modelOnMouseOver);


                        /*var blur:BlurFilter = new BlurFilter();
                        blur.blurX = 100;
                        blur.blurY = 100;
                        blur.quality = BitmapFilterQuality.MEDIUM;
                        model.ownCanvas = true;
                        model.filters = [blur]; */

                        skybox = new Skybox6(res.sky_material);
                        skybox.quarterFaces();
                        scene.addChild(skybox);

                        scene.addChild(terrain.extrude);
                        terrain.ReadTerrain();

                        md2 = new Md2();
                        model =(md2.parseGeometry(res.OgreMesh) as Mesh);
                        model.material = res.ogre_material;
                        model.scale(0.01);
                        model.moveUp(30);
                        model.position = new Number3D(0,0,0);
                        scene.addChild(model);

                        md22 = new Md2();
                        model2 =(md22.parseGeometry(res.BobaMesh) as Mesh);
                        model2.material = res.boba_material;
                        model2.scale(0.01);
                        model2.moveUp(30);
                        model2.position = new Number3D(0,0,0);
                        scene.addChild(model2);
                        
//model2.animationLibrary.getAnimation("deatha").animator.loop =
false;
                        
//model2.animationLibrary.getAnimation("deathb").animator.loop =
false;
                        
//model2.animationLibrary.getAnimation("deathc").animator.loop =
false;
                        
//model2.animationLibrary.getAnimation("stand").animator.play();

                                                var filters:Array = new Array();
                        
//color,alpha,blurx,blury,strength,quality,inner-whether the glow
is inner,knockout
                        filters.push(new GlowFilter(0x000000, 1, 19, 19, 5, 1, 
false,
false));
                        model.ownCanvas = true;
                        model.filters = filters;

                        camera = new SpringCam();
                        camera.target = model2;
                        camera.positionOffset = new Number3D(120,50,0);
                        camera.damping = 50;
                        camera.stiffness = 20;
                        camera.rotationY = 90;
                        //camera.target = model;
                        //camera.lookAt(model.position);
                        //camera.position = model.position;
                        view.camera = camera;
                        //camera.lookAt(textfield.position);




                        textfield = new TextField3D("Arial");
                        textfield.text = "Ogre";
                        textfield.material = res.material2;
                        textfield.size = 31;
                        textfield.leading = 50;
                        textfield.letterSpacing = 2;
                        textfield.width = 200;
                        textfield.align = "C";
                        textfield.position = model.position;
                        textfield.rotationY +=270;
                        textfield.moveUp(120);
                        //textfield.moveForward(30);
                        textfield.bothsides = true;
                        scene.addChild(textfield);
                }

                private function initListeners():void
                {
                        addEventListener(Event.ENTER_FRAME, onEnterFrame);
                        stage.addEventListener(MouseEvent.MOUSE_DOWN, 
onMouseDown);
                        stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
                        stage.addEventListener(MouseEvent.MOUSE_MOVE, 
onMouseMove);
                        stage.addEventListener(Event.RESIZE, onResize);
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, 
onKeyDown);
                        stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
                        
stage.addEventListener(MouseEvent.MOUSE_WHEEL,onMouseWheel);
                        onResize();
                }

                private function onEnterFrame(dt:Number):void
                {
                        //simpleShadow.plane.y =
terrain.getElevation().getLevel(simpleShadow.plane.x,-
simpleShadow.plane.z,-100);
                        //simpleShadow.apply(scene);
                        stillMoving = true;
                        if(forward)
                        {
                                        
model2.animationLibrary.getAnimation("run").animator.play();
                                        model2.moveLeft(1000);
                                        textfield.position = model.position;
                                        textfield.moveUp(120);
                                //camera.position = model.position;
                                //camera.moveLeft(1000);

                        }
                        else if(backward)
                        {
                                model2.moveRight(1000);
                                textfield.position = model.position;
                                textfield.moveUp(120);
                                //camera.position = model.position;
                                //camera.moveRight(1000);

                        } else setAnimation("stand");

                        if (turnLeft)
                        {
                                model2.rotationY -= 20;
                                textfield.position = model.position;
                                textfield.moveUp(120);
                                //camera.position = model.position;
                                //camera.rotationY -= 20;
                        }
                        if (turnRight)
                        {
                                model2.rotationY += 20;
                                textfield.position = model.position;
                                textfield.moveUp(120);
                                //camera.position = model.position;
                                //camera.rotationY += 20;
                        }
                        model2.y = terrain.getElevation().getLevel(model2.x, 
-model2.z,
-100);
                        model.y = terrain.getElevation().getLevel(model.x, 
-model.z, -100);
                        //camera.y = terrain.getElevation().getLevel(camera.x, 
-camera.z,
-100);
                        //camera.position = model.position;
                        //camera.moveUp(150);
                        //camera.rotationZ = 20;
                        view.render();
                        camera.view;
                }
                private function setAnimation(anim:String):void
                {
                        
model2.animationLibrary.getAnimation(anim).animator.play();
                }

                private function onMouseDown(event:MouseEvent):void
        {
 
model2.animationLibrary.getAnimation("attack").animator.play();
        }

        private function onMouseUp(event:MouseEvent):void
        {
 
model2.animationLibrary.getAnimation("stand").animator.play();
        }

        private function onMouseMove(event:MouseEvent3D):void
        {

        }

        private function onKeyDown(event:KeyboardEvent):void
                {
                        if (event.keyCode == 87)
                        {
                                forward = true;
                        }
                        else if (event.keyCode == 83)
                        {
                                backward = true;
                        }
                        else if (event.keyCode == 68)
                        {
                                turnRight = true;
                        }
                        else if (event.keyCode == 65)
                        {
                                turnLeft = true;
                        }
                        else if (event.keyCode == Keyboard.SPACE)
                        {
                                jump = true;
                        }
                }
                private function onKeyUp(event:KeyboardEvent):void
                {
                        if (event.keyCode == 87)
                        {
                                forward = false;
                        }
                        else if (event.keyCode == 83)
                        {
                                backward = false;
                        }
                        else if (event.keyCode == 68)
                        {
                                turnRight = false;
                        }
                        else if (event.keyCode == 65)
                        {
                                turnLeft = false;
                        }
                        else if (event.keyCode == Keyboard.SPACE)
                        {
                                jump = false;
                        }
                }

                private function onResize(event:Event = null):void
                {
                        view.x = stage.stageWidth / 2;
            view.y = stage.stageHeight / 2;
                }

                private function onMouseWheel(event:MouseEvent):void
                {
                        if(event.delta < 0 )
                        {
                                camera.position = model.position;
                                camera.moveForward(150);
                                //camera.x +=150;
                        }
                        else if (event.delta > 0)
                        {
                                camera.position = model.position;
                                camera.moveBackward(150);
                        }
                }
        }
}

Reply via email to