2013-05-21 59 views
0

我在AS3中,玩家會生成單元,其對屏幕的另一邊出口自動行走製作側滾動遊戲,但也有塔阻止他們。我希望塔分開拍攝,有什麼辦法嗎? 這裏是我的代碼,一旦if語句滿足所有的塔同時啓動。AS3:數組中的單獨實例?

private function tower1Fire():void 
    { 
      for (var j:int = creep1Array.length - 1; j >= 0; j--) 
      { 
       for each (var towerOne:mcTower1 in tower1Array) 
       { 
        if (creep1Array[j].x - towerOne.x <= 100 && creep1Array[j].y > towerOne.y) 
        { 
         var newTower1Bullet:mcLaser1 = new mcLaser1; 
         newTower1Bullet.x = towerOne.x; 
         newTower1Bullet.y = towerOne.y; 
         tower1BulletArray.push(newTower1Bullet); 
         stage.addChild(newTower1Bullet); 
        } 
       } 
      } 
    } 

我在屏幕上有3座樓,使用此代碼添加:

   var tower1New1:MovieClip = new mcTower1; 
     tower1New1.x = 313; 
     tower1New1.y = 340; 
     tower1Array.push(tower1New1); 
     MovieClip(root).addChild(tower1New1); 

我沒有得到任何錯誤。任何答覆將不勝感激,謝謝!

回答

1

從我可以告訴你所有的塔都將在一個單一的「幀渲染」,這就是爲什麼它看起來像他們都燒一次「火」。 (因爲你的整個循環將在一次繪製操作中執行)

如果我我是你,我會聽ENTER_FRAME事件,並保持幀的計數....我會開火塔只,一次非常10-20幀。所以...

private ENTER_FRAME(event:Event):void 
{ 

    if(frameCount >= 20) 
    { 
     // TODO: fire logic goes here 

     // reset the frameCount to zero 
     frameCount = 0; 

     // you need to keep a running index of your towers, 
     // so the next time your code executes, it will fire the next tower 
     towerIndex++ 
    } 
    frameCount++; 
} 

所以,如果你我們這樣做,你就不會有for循環。

+0

您好,感謝您的答覆。現在的問題是,我想塔只有火的時候,附近有小兵,而現在,如果蠕變是附近的塔,所有的塔樓將閃光。我不能在剛剛寫的代碼中添加'if'語句,對吧?對不起,我還是很新的AS3 ... – user2036822

+0

是的,你可以,所以在這裏我添加了「火邏輯到這裏」,你可以檢查是否有任何附近的小兵。對不起,我第一次不太明白......所以你也可能只想增加if語句中的towerindex。 –