2016-02-19 74 views
0

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

这里的原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个不同的关卡。第一级只带毒刺,第二级只带毒刺2,最后一级带毒刺和毒刺2。还有从教程一个评分系统,下面的编码从教程,它控制敌人的机会滋生:

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

我试图将其更改为:

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

所以只有毒刺当玩家的得分低于10000(1级)时会产生,但是我得到了1084的错误。那么,如何将多个敌人添加到阵列以及如何让这些敌人在特定得分之间产生?

回答

1

错误1021意味着您有两个具有相同名称的函数(loop),但由于某些明显的原因,这是不允许的。

错误5000有时是不明确的,它通常发生在代码中有其他问题时。

错误5000:类“MyClass的”必须继承“的flash.display.MovieClip”,因为它链接到该类型

库符号,您应该看一看在闪存资料库确保你有正确的基类声明。

错误1084只是一个简单的语法错误,您在if语句中缺少)

+0

谢谢,我解决了敌人的问题,但是我仍然无法解决关卡问题。 –