-2

所以我不断收到这个错误,调试器不会运行,而只是在编译器框中显示这个错误。这几天一直让我发疯,所以我决定把它贴在这里。

所以它说:

Scene 1, Layer 'powerups', Frame 1  1084: Syntax error: expecting rightbrace before end of     program.

我设计了我的代码,以便“powerups”层只包含“powerup”功能,这是“Powerups”层的代码:

//this code holds the powerups
function extraCoins():void
{
    coins = coins + 1000;
}

function doubleCoins():void
{
    doubCoins = true;
}

function hyperBoostD():void
{
    Boost = 600;
    playerSpeed = playerSpeed + 150;
    player.y = player.y + 300;
    colBoolean = false;
    hyperBoost.push(Boost);
}

function BoostD():void
{
    Boost = 200;
    playerSpeed = playerSpeed + 100;
    player.y = player.y + 200;
    colBoolean = false;
    boost.push(Boost);
}

function multiplierDone():void
{
    multiplier++;
}

function multiplierDtwo():void
{
    multiplier = multiplier + 2;
}

function watchOutD():void
{
    watchOut = true;
    watchOutT = 600;
}

function blowOutD():void
{
    blowOut = true;
    blowOutT = 100;
}

function planeD():void
{
    planeT = 600;
    colBoolean = false;
}

function havenD():void
{
    havenT = 200;
    coinMake = 20;
}

function badBirdD():void
{
    birdT = 600;
    birdSet = 10;
}

function tricksterD():void
{
    tricksterT = 600;
    trickster = true;
}

function rampageD():void
{
    rampageT = 600;
    rampage = true;
    pplStat = true;
    var tempWatchoutPPL:MovieClip;
    tempWatchoutPPL = new peopleWatchout();
    tempWatchoutPPL.y = stage.stageHeight /2;
    tempWatchoutPPL.x = stage.stageWidth /2;
    addChild(tempWatchoutPPL);
    signs.push(tempWatchoutPPL);
}

function helpPPLD():void
{
    helpPPLT= 600;
    helpPPL = true;
    var tempHelpPPL:MovieClip;
    tempHelpPPL = new savePpl();
    tempHelpPPL.y = stage.stageHeight /2;
    tempHelpPPL.x = stage.stageWidth /2;
    addChild(tempHelpPPL);
    signs.push(tempHelpPPL);
}

这是我的主要代码:

import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.engine.SpaceJustifier;
import flashx.textLayout.operations.MoveChildrenOperation;
import flash.utils.Timer;
import flashx.textLayout.accessibility.TextAccImpl;

/*
CODE BY: 
START DATE: 12.06.2013.
FINISH DATE: TBA

NOTE: My secound video game ever.

BUGs:
-obsticle collison stops working after some time playing
-passing coin gives you more than 5 coins
*/

/***..........................VARs.........................................................................***/
    var STATE_START:String="STATE_START";
    var STATE_START_PLAYER:String="STATE_START_PLAYER";
    var STATE_PLAY:String="STATE_PLAY";
    var STATE_END:String="STATE_END";
    var gameState:String;

    //Player
        var player:MovieClip;
        var playerSpeed:Number;
        var speedLimit:Number;
        var speedLimitInc:Number;

    //score
        var score:Number= 1;
        var scoreInc:Number= 1;

    //coins
        var coins:Number= 1;
        var balance:Number;
        var coinCount:Number= 1;
        var Coins:Array;
        var doubCoins:Boolean = false;
        var multiplier:int = 1;
        var coinMake:Number = 60;

    //distance
        var meters:Number= 1;
        var distance:Number= 1;

    //holds drops
        var drops:Array; 

    //terrain
            //decides spawning time
        var GenS:Number=1;
            //holds terrain
        var terrain:Array;

    //boost
            //holds the speedBoosts that are happening
        var boost:Array;
            //holds boost dysp obj.
        var booost:Array;
            //holds speedBoost duration
        var Boost:Number;
            //collision on/off
        var colBoolean:Boolean=true;
        var hyperBoost:Array;

    //obsticles
        var obsticles:Array;

    //other
        var level:Number= 1;
        var levelCount:Number= 1;
        var birdArray:Array;
        var jumpState:Boolean = false;
        var jumpStateT:int;
        var jumps:Array;

    //powerUps
        var watchOut:Boolean = false;
        var watchOutT:int;
        var blowOut:Boolean = false;
        var blowOutT:int;
        var planeT:int;
        var birdT:int;
        var birdSet:int = 300;
        var havenT:int;
        var trickster:Boolean = false;
        var tricksterT:int;
        var ppl:Array;
        //pplStat tells if ppl are getting hurt or need help, if ture, it means you are gonna run them over
        var pplStat:Boolean = true;
        var rampage:Boolean;
        var rampageT:int;
        var helpPPLT:int;
        var helpPPL:Boolean;
        var signs:Array;


/***.......................Display SETUP...................................................................***/
    homeScreen.visible = true;
    gamePlay.visible = false;
    endScreen.visible = false;

/***........................Start Screen...................................................................***/
    homeScreen.play_BTN.addEventListener(MouseEvent.CLICK, clickPlay);
    homeScreen.settings_BTN.addEventListener(MouseEvent.CLICK, clickSettings);
    function clickPlay(event:MouseEvent):void
    {
        //Move main screen from stage
        homeScreen.visible = false;

        //Begin loading the game
        gameState = STATE_START;
        trace (gameState);
        addEventListener(Event.ENTER_FRAME, gameLoop);
    }

    function clickSettings(event:MouseEvent):void
    {
        //Move main screen from stage
        homeScreen.visible = false;
        //settingsScreen.visible...
    }


/***...........................Game LOOP...................................................................***/

    function gameLoop(e:Event):void
    {
        switch(gameState)
        {
            case STATE_START:
                startGame();
                break;

            case STATE_START_PLAYER:
                startPlayer();
                break;

            case STATE_PLAY:
                playGame();
                break;

            case STATE_END:
                endGame();
                break;

        }
    }


/***...............STATE_START.............................................................................***/

    function startGame():void
    {
        level = 1;
        playerSpeed = 1;
        speedLimit = 10;
        speedLimitInc = 1;

        //Graphics
            //coins
        Coins = new Array();
            //player icon
        player = new Player(); 
            //start obsticles array
        obsticles = new Array();
            //holds terrain (speedUps, jupms, etc)
        terrain = new Array();
            //holds speedUps
        boost = new Array();
        booost = new Array();
        hyperBoost = new Array();
            //other
        drops = new Array();
        birdArray = new Array();
        jumps = new Array();
        ppl = new Array();
        signs = new Array();

        gameState = STATE_START_PLAYER;
        trace(gameState);
    }

/***....................STATE_START_PLAYER................................................................***/

    function startPlayer():void
    {
        //start the player
        //set possition of player
        player.y = player.height + 10;
        addChild(player);
        addEventListener(Event.ENTER_FRAME, movePlayer);

        //changing screens

        //start game
        gameState = STATE_PLAY;
        trace(gameState);


    }

    //player controll
    function movePlayer(e:Event):void 
    {
        //mouse\touch recognition
        player.x = stage.mouseX;

        //making sure player does not move out of the stage
        if (player.x < 0)
        {
            player.x = 0;
        }
        if (player.x > (stage.stageWidth - 2/player.width))
        {
            player.x = stage.stageWidth + 2/player.width;
        }
    }

/***............................STATE_PLAY................................................................***/
    function playGame():void
    {
        if (watchOutT <= 0) {watchOut = false}
        if (blowOutT <= 0) {blowOut = false}
        if (planeT <= 0) {colBoolean = true}
        if (tricksterT <= 0) {trickster= false}
        if (havenT <= 0) {coinMake = 60}
        if (birdT <= 0) {birdSet = 300}
        if (planeT >= 0) {planeT--} birdT
        if (havenT >= 0) {havenT--}
        if (birdT >= 0) {birdT--}
        if (tricksterT >= 0) {tricksterT--}
        speedUp();
        metersCount();
        scoreCount();
        makeCoins();
        moveCoins();
        makeTerrain();
        moveDrop();
        makeBird();
        moveBird();
        moveJump();
        moveSigns();
        movePPL();
        stunts();
        //speed boost
        moveSpeedBoost();
        //obsticles
        moveObsticle();
    }

    function metersCount():void
    {
        meters = meters + playerSpeed;
        distance = meters / 50;
        if (distance >= 1000 && distance <= 1200)
        {
            levelCount= 1000; 
            level = 2; 
        }
        if (distance >= (levelCount + 1000) && distance <= (levelCount + 1200))
        {
            level++;
            levelCount= levelCount + 1000;
        }
        trace("level", level);
        trace("meters", meters);
        trace("coins", coins);
        trace("distance", distance);
    }

    function scoreCount():void
    {
        if (scoreInc >= 30) { score++; scoreInc=1; trace("-score", score); }
        scoreInc++
    }

    function makeCoins():void
    {
        trace("coinCount", coinCount);
        if (coinCount == coinMake) 
        {
            var tempCoin:MovieClip;
            //generate enemies
            tempCoin = new Coin();
            tempCoin.speed = playerSpeed;
            tempCoin.x = Math.round(Math.random()*400);
            tempCoin.y = stage.stageHeight;

            addChild(tempCoin);
            Coins.push(tempCoin);
            coinCount = 1;
        }
        coinCount++;
    }

    function moveCoins():void
    {
        var j:int;
        var tempCoin:MovieClip;
        for(var i:int = Coins.length-1; i>=0; i--)
        {
        tempCoin = Coins[i];
        tempCoin.y = tempCoin.y - playerSpeed;
        }

        //testion colision with the player and screen out
        if (tempCoin != null)
        {
            if (tempCoin.y > stage.stageHeight)
            {
                removeCoin(i);
            }
            if (tempCoin.hitTestObject(player))
            {
                if (i != j && doubCoins == false) {coins = coins + 5; j = i;}
                if (i != j && doubCoins == true) {coins = coins + 10; j = i;}
                removeCoin(i);
            }
        }
    }
    function speedUp():void
    {
        trace ("speed", playerSpeed);
        //checks if any boosts are on
        var k:Boolean;
        //making speed limit
        if (playerSpeed < speedLimit)
        {
            playerSpeed ++;
            if (k == true) {j++}
        }

        //increasing speed limit
        if (speedLimitInc == 100)
        {
            speedLimit ++;
            speedLimitInc = 1;
        }
        speedLimitInc ++;


        var j:Number;
        j = playerSpeed;
        for (var i:int = boost.length-1; i>=0; i--)
        {
            if (tempBoostN >= 0)
            {k = true; colBoolean = true;}
            else 
            {
                k = false;
                player.y = player.height + 30;
            }
            var tempBoostN = boost[i];
            if (playerSpeed >= j)
                {
                if (tempBoostN >= 150)
                {
                    playerSpeed = playerSpeed -1;

                } else if (tempBoostN <= 150 && tempBoostN >= 30) {
                    playerSpeed = playerSpeed - 2;
                }
                tempBoostN--;
            }
        }

        var l:Number;
        l = playerSpeed;
        for (var i:int = boost.length-1; i>=0; i--)
        {
            if (tempBoostN >= 0)
            {k = true; colBoolean = true;}
            else 
            {
                k = false;
                player.y = player.height + 30;
            }
            var tempBoostH = hyperBoost[i];
            if (playerSpeed >= l)
                {
                if (tempBoostH >= 150)
                {
                    playerSpeed = playerSpeed -1;

                } else if (tempBoostN <= 150 && tempBoostH >= 30) {
                    playerSpeed = playerSpeed - 2;
                }
                tempBoostH--;
            }
        }
    }

    function makeBos():void
    {
        var tempBoost:MovieClip;

        tempBoost = new speedPod();
        if (tempBoost != null)
        {
            tempBoost.y = stage.stageHeight;
            tempBoost.x = Math.round(Math.random()*400);
            booost.push(tempBoost);
            var i = getChildIndex(player);
            addChild(tempBoost);
            setChildIndex (tempBoost, i);
        }
    }

    function moveSpeedBoost():void
    {
        var tempBoost:MovieClip;
        for(var i:int = booost.length-1; i>=0; i--)
        {
            tempBoost = booost[i];
            tempBoost.y = tempBoost.y - playerSpeed;
        }

        //test if Boost is off-stage and set it to remove
        if (tempBoost != null && tempBoost.y < stage.stageHeight)
        {
            removeSpeedBoost(i);
        }

        //player-Boost colision
        if (tempBoost != null && tempBoost.hitTestObject(player))
        {
            Boost = 200;
            playerSpeed = playerSpeed + 100;
            player.y = player.y + 200;
            colBoolean = false;
            boost.push(Boost);
        }
    }

    function makeTerrain():void
    {
        if (GenS == 29)
        {
            GenS = 1;
            var genType:Number = Math.floor(Math.random()*100);

            //POWERUPS
                //handling watchout powerup
                if (watchOut = true){watchOutT--; makeObs();}
                //handling blowout powerup
                if (blowOut = true){blowOutT--;}
                //handling trickster powerup
                if (trickster = true){makeJump();}
                //handling rampage powerup
                if (rampage = true){makePPL(0); rampageT--;}
                //handling hurtPPL powerup
                if (hurtPPL = true){makePPL(1); hurtPPLT--;}

            //general spawning
            if (genType >= 1 && genType <=20 && watchOut == false && blowOut == false && trickster == false)
            {
                trace("makeObs");
                makeObs();
            }else if (genType >= 20 && genType <=60 && watchOut == false && blowOut == false && trickster == false)
            {
                trace("makeBos");
                makeBos();
            }else if (genType >= 60 && genType <=65 && watchOut == false && blowOut == false && trickster == false)
            {
                trace("makeDrop");
                makeDrop();
            }else if (genType >= 65 && genType <=100 && watchOut == false && blowOut == false && trickster == false)
            {
                trace("make jump");
                makeJump();
            }
        }
        GenS++;
    }

    function makeObs():void
    {
        var tempObs:MovieClip;
        //determining the type of an obsticle
        var typeObs:Number = Math.floor(Math.random()*3);
        switch (typeObs)
        {
            case 0:
                tempObs = new wLog();
                break;
            case 1:
                tempObs = new Spill();
                break;
            case 2:
                tempObs = new wTree();
                break;
        }
        if (tempObs != null)
        {
            tempObs.y = stage.stageHeight;
            tempObs.x = Math.round(Math.random()*400);
            addChild(tempObs);
            obsticles.push(tempObs);
        }
    }

    function makePPL():void
    {
        var tempPPL:MovieClip;
        if (hurtPPL = true)
        {tempPPL = new personHurt();}
        else {tempPPL = new person();}
        tempPPL.y = stage.stageHeight;
        tempPPL.x = Math.round(Math.random()*400);
        addChild(tempPPL);
        ppl.push(tempPPL);
    }

    function movePPL():void
    {
        //move enemies
        var tempPPL:MovieClip;
        for(var i:int = ppl.length-1; i>=0; i--)
        {
            tempPPL = ppl[i];
            tempPPL.y = tempPPL.y - playerSpeed;
        }

        //test if obsticle is off-stage and set it to remove
        if (tempPPL != null && tempPPL.y < stage.stageHeight)
        {
            removePPL(i);
        }

        //player-obsticle colision
        if (tempPPL != null && tempPPL.hitTestObject(player) && hurtPPL = true)
        {
            score = score + 1000;
            coins = coins + 1000;
            var tempSaved:MovieClip;
            tempSaved = new savedPerson();
            tempSaved.y = stage.stageHeight /2;
            tempSaved.x = stage.stageWidth /2;
            addChild(tempSaved);
            signs.push(tempSaved);
            trace ("person saved");
            removePPL(i);

        } else if (tempPPL != null && tempPPL.hitTestObject(player)) 
        {
            score = score - 1000;

            var tempRanOver:MovieClip;
            tempRanOver = new ranOver();
            tempRanOver.y = stage.stageHeight /2;
            tempRanOver.x = stage.stageWidth /2;
            addChild(tempRanOver);
            signs.push(tempRanOver);
            trace ("ran over a person");
            removePPL(i);
        }
    }

    function moveSigns():void
    {
        //move enemies
        var tempSign:MovieClip;
        for(var i:int = signs.length-1; i>=0; i--)
        {
            tempSign = signs[i];
            tempSign.y = tempSign.y - playerSpeed;
        }

        //test if obsticle is off-stage and set it to remove
        if (tempSign != null && tempSign.y < stage.stageHeight)
        {
            removeSign(i);
        }
    }

    function makeDrop():void
    {
        var tempDrop:MovieClip;
        tempDrop = new Drop();
        tempDrop.y = stage.stageHeight;
        tempDrop.x = Math.round(Math.random()*400);
        addChild(tempDrop);
        drops.push(tempDrop);

    }

    function moveDrop():void
    {
        //move enemies
        var tempDrop:MovieClip;
        for(var i:int = drops.length-1; i>=0; i--)
        {
            tempDrop = drops[i];
            tempDrop.y = tempDrop.y - playerSpeed;
        }

        //test if obsticle is off-stage and set it to remove
        if (tempDrop != null && tempDrop.y < stage.stageHeight)
        {
            removeDrop(i);
        }

        //player-obsticle colision
        if (tempDrop != null && tempDrop.hitTestObject(player))
        {
            powerUp();
        }
    }

    function makeBird():void
    {
        if (distance >= 200)
        {
            var chance:Number = Math.floor(Math.random()*birdSet);
            if (chance <= 1 + level) 
            {
                var tempBird:MovieClip;
                //generate enemies
                tempBird = new BirdO();
                tempBird.speed = 60 + playerSpeed;
                tempBird.x = Math.round(Math.random()*400);

                addChild(tempBird);
                birdArray.push(tempBird);
            }
        }
    }

    function moveBird():void
    {
        var tempBird:MovieClip;
        for(var i:int = birdArray.length-1; i>=0; i--)
        {
            tempBird = birdArray[i];
            tempBird.y -= tempBird.speed;
            }

        if (tempBird != null)
        {
            if (tempBird.y > stage.stageHeight)
            {
                removeBird(i);
            }

            if (tempBird.hitTestObject(player))
            {
                gameState = STATE_END;
            }
        }
    }

    function powerUp():void
    {
        var dropType:Number = Math.floor(Math.random()*16);
        switch (dropType)
        {
            case 0:
                trace("extra coins");
                extraCoins();
                break;

            case 4:
                trace("2x coins");
                doubleCoins();
                break;

            case 2:
                trace("hyper boost");
                hyperBoostD();
                break;

            case 3:
                trace("boost");
                BoostD();
                break;

            case 4:
                trace("multiplier 1x");
                multiplierDone();
                break;

            case 5:
                trace("multiplier 2x");
                multiplierDtwo();
                break;

            case 6:
                trace("watch out!");
                watchOutD();
                break;

            case 7:
                trace("blowout");
                blowOutD();
                break;

            case 8:
                trace("plane");
                planeD();
                break;

            case 9:
                trace("haven");
                havenD();
                break;

            case 10:
                trace("bad bird");
                badBirdD();
                break;

            case 11:
                trace("trickster");
                tricksterD();
                break;

            case 12:
                trace("rampage");
                rampageD();
                break;

            case 13:

                break;

            case 14:

                break;

            case 15:

                break;

            case 16:

                break;

        }

    }

    function makeJump():void
    {
        var tempJump:MovieClip;
        tempJump = new Jump();

        tempJump.speed = playerSpeed;
        tempJump.x = Math.round(Math.random()*400);

        addChild(tempJump);
        jumps.push(tempJump);
    }

    function moveJump():void
    {
        var tempJump:MovieClip;
        for(var i:int = jumps.length-1; i>=0; i--)
        {
            tempJump = jumps[i];
            tempJump.y = tempJump.y - playerSpeed;
        }

        //test if obsticle is off-stage and set it to remove
        if (tempJump != null && tempJump.y < stage.stageHeight)
        {
            removeJump(i);
        }

        //player-obsticle colision
        if (tempJump != null && tempJump.hitTestObject(player))
        {
            jumpState = true;
            jumpStateT = 100;
        }
    }

    function stunts():void
    {
        if (jumpStateT >= 0)
        {
            jumpStateT--;
            jumpState = true;
        }
        if (jumpState = true)
        {
            Multitouch.inputMode = MultitouchInputMode.GESTURE;
            stage.addEventListener (TransformGestureEvent.GESTURE_SWIPE, fl_SwipeHandler);
        }
    }

    function fl_SwipeHandler(event:TransformGestureEvent):void
    {
        switch(event.offsetX)
        {
            // swiped right
            case 1:
            {
                // My code
                trace ("side flip");
                score = score + 1000;
                coins = coins + 500;
                break;
            }
            // swiped left
            case -1:
            {
                // My code
                trace ("barell roll");
                score = score + 1000;
                coins = coins + 500;
                break;
            }
        }

        switch(event.offsetY)
        {
            // swiped down
            case 1:
            {
                trace ("front flip");
                score = score + 1000;
                coins = coins + 500;
                break;
            }
            // swiped up
            case -1:
            {
                trace ("side flip");
                score = score + 1000;
                coins = coins + 500;
                break;
            }
        }
    }

    function moveObsticle():void
    {
        //move enemies
        var tempObs:MovieClip;
        for(var i:int = obsticles.length-1; i>=0; i--)
        {
            tempObs = obsticles[i];
            tempObs.y = tempObs.y - playerSpeed;
        }

        //test if obsticle is off-stage and set it to remove
        if (tempObs != null && tempObs.y < stage.stageHeight)
        {
            removeObsticle(i);
        }

        //player-obsticle colision
        if (tempObs != null && tempObs.hitTestObject(player))
        {
            gameState = STATE_END;
        }
    }

/*REMOVING BS FROM STAGE*/
//remove obsticle
function removeObsticle(idx:int):void 
{
    if(idx >= 0)
    {
        removeChild(obsticles[idx]);
        obsticles.splice(idx, 1);
    }
}

function removeTer(idx:int):void 
{
    if(idx >= 0)
    {
        removeChild(terrain[idx]);
        terrain.splice(idx, 1);
    }
}

function removeSpeedBoost(idx:int):void 
{
    if(idx >= 0)
    {
        removeChild(boost[idx]);
        boost.splice(idx, 1);
    }
}

function removeCoin(idx:int):void 
{
    if(idx >= 0)
    {
        removeChild(Coins[idx]);
        Coins.splice(idx, 1);
    }
}

function removeDrop(idx:int):void 
{
    if(idx >= 0)
    {
        removeChild(drops[idx]);
        drops.splice(idx, 1);
    }
}

function removeBird(idx:int):void 
{
    if(idx >= 0)
    {
        removeChild(birdArray[idx]);
        birdArray.splice(idx, 1);
    }

function removeJump(idx:int):void 
{
    if(idx >= 0)
    {
        removeChild(jumps[idx]);
        jumps.splice(idx, 1);
    }
}

function removePPL(idx:int):void 
{
    if(idx >= 0)
    {
        removeChild(ppl[idx]);
        ppl.splice(idx, 1);
    }
}

function removeSigns(idx:int):void 
{
    if(idx >= 0)
    {
        removeChild(signs[idx]);
        signs.splice(idx, 1);
    }
}
/***.........................STATE_END....................................................................***/

    function endGame():void
    {
        gamePlay.visible = false;
        endScreen.visible = true;
    }

我一次又一次地检查是否有任何语法缺失,但未能找到问题。

我看到一个人在这里问一个关于类似错误的问题,结果证明它不是语法错误,他仍然没有解决问题。

我还正确缩进了所有代码,并且在 flash pro cs6 中使用了“自动格式化”来查看它是否会发出任何语法错误,但它没有。

我正在制作一个手机游戏,所以所有代码都在以下环境中运行:

AIR 3,2 for android 当然是 3.0

提前致谢。

4

1 回答 1

2

您在此功能后缺少一个右括号 }:在询问之前尝试仔细阅读您的代码。很容易注意到:)

function removeBird(idx:int):void 
{
  if(idx >= 0)
  {
    removeChild(birdArray[idx]);
    birdArray.splice(idx, 1);
  }
于 2013-06-25T12:14:53.777 回答