ActionScript 3语法错误

时间:2016-02-19 12:21:58

标签: actionscript-3 flash

我是AS3和这个网站的新手。我使用http://asgamer.com/2009/as3-flash-games-for-beginners-scores-huds-and-user-interface的教程创建了我自己的射击游戏版本。该教程带有1个敌人和1个游戏关卡,我试图添加更多敌人和关卡。

这是教程中原始的Engine.as编码:

package com.asgamer.basics1 
{   import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.events.Event;

public class Engine extends MovieClip
{

    private var numStars:int = 80;
    public static var enemyList:Array = new Array();
    private var ourShip:Ship;

    private var scoreHUD:ScoreHUD;

    public function Engine() : void
    {
        ourShip = new Ship(stage);
        ourShip.x = stage.stageWidth / 2;
        ourShip.y = stage.stageHeight / 2;
        ourShip.addEventListener("hit", shipHit, false, 0, true);
        stage.addChild(ourShip);


        scoreHUD = new ScoreHUD(stage);
        stage.addChild(scoreHUD);

        for (var i:int = 0; i < numStars; i++)
        {
            stage.addChildAt(new Star(stage), stage.getChildIndex(ourShip));
        }

        addEventListener(Event.ENTER_FRAME, loop, false, 0, true);

    }

    private function loop(e:Event) : void
    {
        if (Math.floor(Math.random() * 90) == 5)
        {
            var enemy:Stinger = new Stinger(stage, ourShip);

            enemy.addEventListener(Event.REMOVED_FROM_STAGE, removeEnemy, false, 0, true);
            enemy.addEventListener("killed", enemyKilled, false, 0, true);
            enemyList.push(enemy);
            stage.addChild(enemy);
        }   
    }

    private function enemyKilled(e:Event)
    {
        scoreHUD.updateKills(1);
        scoreHUD.updateScore(e.currentTarget.points);           
    }

    private function removeEnemy(e:Event)
    {
        enemyList.splice(enemyList.indexOf(e.currentTarget), 1);
    }

    private function shipHit(e:Event)
    {
        scoreHUD.updateHits(1);
    }


}
}

对于敌人,我已经创建了另一个名为Stinger2的敌人,并将其添加到第一个敌人循环下,如下所示,但我得到错误1021和5000.

    private function loop(e:Event) : void
    {
        if (Math.floor(Math.random() * 90) == 5)
        {
            var enemy:Stinger = new Stinger(stage, ourShip);

            enemy.addEventListener(Event.REMOVED_FROM_STAGE, removeEnemy, false, 0, true);
            enemy.addEventListener("killed", enemyKilled, false, 0, true);
            enemyList.push(enemy);
            stage.addChild(enemy);
        }   
    }

    private function loop(e:Event) : void
    {
        if (Math.floor(Math.random() * 90) == 5)
        {
            var enemy:Stinger2 = new Stinger2(stage, ourShip);

            enemy.addEventListener(Event.REMOVED_FROM_STAGE, removeEnemy, false, 0, true);
            enemy.addEventListener("killed", enemyKilled, false, 0, true);
            enemyList.push(enemy);
            stage.addChild(enemy);
        }   
    }

对于关卡,我想创建3个不同的关卡。第一级只有Stinger,第二级只有Stinger2,最后一级是Stinger和Stinger2。教程中还有一个乐谱系统,下面的编码来自教程,它控制了敌人产生的机会:

       if (Math.floor(Math.random() * 30) == 5

我尝试将其更改为:

       if (Math.floor(Math.random() * 30) == 5 && scoreHUD(value:Number) < 10000)

所以Stinger只在玩家的得分低于10000(等级1)时产生,但后来我得到了错误1084.那么我如何在阵列中添加多个敌人以及如何让这些敌人在特定分数之间产生?

1 个答案:

答案 0 :(得分:1)

错误1021表示您有两个具有相同名称(loop)的函数,由于显而易见的原因,这是不允许的。

错误5000有时不明确,通常在您的代码中遇到其他问题时会发生。

  

错误5000:班级&#39; myClass&#39;必须是子类&#39; flash.display.MovieClip&#39;因为它链接到该类型的库符号

您应该在flash中查看您的库,以确保您声明了正确的基类。

错误1084只是一个简单的语法错误,您在)声明中遗漏了if