捕手游戏生活不会更新as3.0

时间:2013-05-11 22:47:36

标签: actionscript-3 actionscript

我正在尝试创建一个简单的捕手游戏。我有基本的结构/逻辑,但我遇到了一些问题。出于某种原因,生活没有像我希望的那样更新。他们实际工作的唯一一次是当一台“好”的起重机从顶部的屏幕出来,然后它们减少一个。但除此之外(抓住“坏”起重机或抓住“加”起重机)并没有减少或增加一个。同样,分数似乎适用于“好”的起重机,增加了我指定的分数,但不是“坏”或“加”起重机。

我错过了什么?救命啊!

    package 
{
    import flash.display.*;
    import flash.events.*;
    import flash.text.*;
    import flash.utils.*;

    public class CatchingCranes extends MovieClip
    {
        //Define the variables
        var catcher:CloudCatcher;
        var nextCrane:Timer;
        var objects:Array = new Array();
        var score:int = 0;
        var timer:Number;
        var maxCount:Number = 60;
        var totalLives:int = 5;
        var CirclesArray:Array = [];
        var spacer:int = 5;
        var startPosition:int = 415;
        var speed:Number = -7.0;

        public function CatchingCranes()
        {
            createTimer();
            createCatcher();
            setNextCrane();
            progressLevels();
            addEventListener(Event.ENTER_FRAME, moveCranes);
        }

        //Function to indicate level progression
        public function progressLevels()
        {
            status_mc.status_txt.text = "LEVEL ONE";
            status_mc.instructions_txt.text = "COLLECT AT LEAST 500 POINTS";
            if (score == 500)
            {
                status_mc.status_txt.text = "LEVEL TWO";
                status_mc.instructions_txt.text = "COLLECT AT LEAST 750 POINTS";
                goToLevelTwo();
            }

            if (score == 750)
            {
                status_mc.status_txt.text = "LEVEL THREE";
                status_mc.instructions_txt.text = "COLLECT AT LEAST 1000 POINTS";
                goToLevelThree();
            }
            if (score == 1000)
            {
                status_mc.status_txt.text = "CONGRATULATIONS";
                status_mc.instructions_txt.text = "YOU NOW HAVE ONE WISH TO MAKE";
                goToWin();
            }

            if (totalLives == 0)
            {
                status_mc.status_txt.text = "GAME OVER";
                status_mc.instructions_txt.text = "CLICK TO TRY AGAIN";
                goToLoose();
            }
        }

        //Function to create a timer
        public function createTimer()
        {
            var myTimer:Timer = new Timer(1000,maxCount);
            myTimer.addEventListener(TimerEvent.TIMER, countdown);
            myTimer.start();
            function countdown(event:TimerEvent):void
            {
                timer = (maxCount)-myTimer.currentCount;
                timer_txt.text = "TIME LEFT: " + String(timer);
                if (timer <= 0)
                {
                    trace("Time's Up");
                    myTimer.removeEventListener(TimerEvent.TIMER, countdown);
                }
            }
        }

        //Function to create the catcher
        public function createCatcher()
        {
            catcher = new CloudCatcher();
            catcher.y = 50;
            catcher.x = 350;
            addChild(catcher);
        }

        //Function to initiate the next crane production
        public function setNextCrane()
        {
            nextCrane = new Timer(750+Math.random()*1000,1);
            nextCrane.addEventListener(TimerEvent.TIMER_COMPLETE, newCrane);
            nextCrane.start();
        }

        //Function to create a new crane
        public function newCrane(event:Event)
        {
            //Array definition holding different kinds of cranes
            var goodCranes:Array = ["ColorCrane1","ColorCrane2","ColorCrane3","ColorCrane4","ColorCrane5"];
            var evilCranes:Array = ["EvilCrane"];
            var silverCranes:Array = ["SilverCrane"];
            var goldCranes:Array = ["GoldCrane"];

            //Create a random number and check whether or not it is less than 0.9 (90 percent probability)
            if (Math.random() < 0.9)
            {
                //Create good cranes
                var r:int = Math.floor(Math.random() * goodCranes.length);
                var classRef:Class = getDefinitionByName(goodCranes[r]) as Class;
                var newCrane:MovieClip = new classRef();
                newCrane.typestr = "good";
            }
            else
            {
                //Create a random number and check whether or not it is more than 0.9 (10 percent probability)
                //Check to see if the current lives count is less than or equal to four, if it is 
                if (totalLives <= 4)
                {
                    //Create cranes that provide user with an additional life
                    var p:int = Math.floor(Math.random() * silverCranes.length);
                    classRef = getDefinitionByName(silverCranes[p]) as Class;
                    newCrane = new classRef();
                    newCrane.typstr = "plus";

                    //Create cranes that are evil
                    var s:int = Math.floor(Math.random() * evilCranes.length);
                    classRef = getDefinitionByName(evilCranes[s]) as Class;
                    newCrane = new classRef();
                    newCrane.typstr = "bad";
                }
                else
                {
                    //If lives are equal to five, only create the evil cranes
                    r = Math.floor(Math.random() * evilCranes.length);
                    classRef = getDefinitionByName(evilCranes[r]) as Class;
                    newCrane = new classRef();
                    newCrane.typstr = "bad";
                }
            }

            //Specify the x and y location of the cranes
            newCrane.x = Math.random() * 700;
            newCrane.y = 500;
            //Add crane
            addChildAt(newCrane, 0);
            objects.push(newCrane);
            setNextCrane();
        }

        //Function to move the cranes up the stage
        public function moveCranes(event:Event)
        {
            for (var i:int = objects.length-1; i>=0; i--)
            {
                //Make the catcher follow the position of the mouse
                catcher.x = mouseX;
                //Specify the crane's speed
                objects[i].y +=  speed;
                //If the object exits the top stage boundaries 
                if (objects[i].y < 0)
                {
                    //Remove the child and take it out of the array
                    removeChild(objects[i]);
                    objects.splice(i,1);

                    //If that object is good
                    if (objects[i].typestr == "good")
                    {
                        //Remove one life from the user
                        totalLives = totalLives - 1;
                        trace(totalLives);
                    }
                }

                //Check to see if the crane collides with the cloud, if it does
                if (objects[i].hitTestObject(catcher))
                {
                    //And the crane is good
                    if (objects[i].typestr == "good")
                    {
                        //Add 25 to the score
                        score +=  25;
                    }

                    //And the crane adds a life
                    if (objects[i].typestr == "plus")
                    {
                        //Add 10 to the score and increase lives by one
                        score +=  10;
                        totalLives = totalLives + 1;
                    }


                    //And the crane is evil
                    if (objects[i].typestr == "bad")
                    {
                        //Take out 5 from the score and remove a life
                        score -=  5;
                        totalLives = totalLives - 1;
                    }

                    //If the score is less than zero, take it back to zero
                    if (score < 0)
                    {
                        score = 0;
                    }

                    //Remove the cranes and splice them from the array
                    removeChild(objects[i]);
                    objects.splice(i,1);
                }
            }

            //Update the score display text and the lives with the correct values
            score_display.text = "Score = " + score;
            lives_txt.text = "Lives: " + totalLives;
        }

        //Functions to specify next level options and win/loose scenarios
        function goToLevelTwo():void
        {

        }
        function goToLevelThree():void
        {

        }
        function goToWin():void
        {

        }
        function goToLoose():void
        {

        }
    }
}

0 个答案:

没有答案