2016-02-19 73 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

謝謝,我解決了敵人的問題,但是我仍然無法解決關卡問題。 –