2014-01-21 91 views
0

我是新來的as3,我試着尋找我的問題的答案已經。對於側面滾動遊戲,我在某些地點設置了敵人,我需要它們產卵,而不是在遊戲中的這些特定位置出現一次。這些是關於該問題的時間表代碼的摘錄。敵人在特定地點產卵

var enemyList:Array = new Array(); 

function addEnemiesToLevel1():void 
{ 
addEnemy (700, 125); 
addEnemy (1000, 125); 
addEnemy(2405, 125); 
addEnemy(3300, -155); 
} 

if (enemyList.length > 0) 
{ 
    for (var i:int = 0; i < enemyList.length; i++) 
    { 
function addEnemy(xLocation:int, yLocation:int):void 
{ 
var enemy:Enemy = new Enemy(xLocation, yLocation); 
back.addChild(enemy); 
enemy.addEventListener(Event.REMOVED, enemyRemoved); 
enemyList.push(enemy); 
} 

敵人被綁定到一個類文件控制對球員運動

package { 
    import flash.display.MovieClip; 
    import flash.events.Event; 

    public class Enemy extends MovieClip { 
     private var xSpeedConst:int = 6; 

     public function Enemy(xLocation:int, yLocation:int) { 
      // constructor code 
      x = xLocation; 
      y = yLocation; 
      addEventListener(Event.ENTER_FRAME, loop); 
     } 

     public function loop(e:Event):void { 

       x -= xSpeedConst; 
      } 

     public function removeSelf():void { 
      trace("remove enemy"); 
      removeEventListener(Event.ENTER_FRAME, loop); 
      this.parent.removeChild(this); 
     } 

    } 

}

敵人也設置了衝突,所以我不希望更改代碼太多,因爲我可能會破壞一些東西。如果我不得不添加計時器,請告訴我究竟在哪裏,因爲我已經嘗試過並且失敗了。感謝您的幫助。

回答

0

雖然我不建議在時間軸上的編碼,在時間軸中的工作示例定時器的設置是這樣的:

var timer:Timer = new Timer(2000,0); 
timer.addEventListener(TimerEvent.TIMER, createEnemy); 

function createEnemy(e:TimerEvent):void{ 
    //create a new enemy, pass the x and y you want (xPos and yPos here) 
    //var xPos:int, yPos:int 
    var enemy:Enemy = new Enemy(xPos, yPos); 
    back.addChild(enemy); 
} 

timer.start(); 

你也可以做一個類似的設置在您的類文件,如果要生成的敵人有。再次,在時間線上執行此操作將更難以維護和調試。

+0

謝謝!這很好。你能告訴我,我將如何分配敵人從幾個x和y位置出來,而不僅僅是一個?我是否需要將添加的敵人刪除到1級功能?我如何控制他們在2級?對不起,他們不會讓我在常規答覆框中發佈問題,所以我必須在這裏發佈這些微縮信。 – user3220726

+0

嗯,我不確定你想怎麼做,但你可能只是想讓它們產生一些點數,然後循環數組並做'var enemy:Enemy = new Enemy(myArray [我] .x,myArray [i] .y);'這將是解決方案。 –

+0

我可以在此代碼的頂部添加2個位置:var enemy:Enemy = new Enemy(xPos,yPos);或者那是不可能的? – user3220726