2014-04-07 82 views
0

所以我有一個火球的陣列,我想知道我將如何去移動這些物品來創建像遊戲一樣的戰法。我已經創建了這個陣列,它裏面裝滿了火球,但我似乎無法讓它們移動。這就是我的數組的創建是這樣的:在閃光移動敵人as3

for (var i:Number = 0; i < fireballs; i++) { 
    var mcFireball :fireball = new fireball(); 
    this.addChild(mcFireball); 
    mcFireball.x = Math.floor((Math.random() * location) + 100); 
    mcFireball.y = Math.floor((Math.random() * location) + 100); 
    mcFireball.scaleX = .5; 
    mcFireball.scaleY = .5; 
    array.push(mcFireball); 
} 

這是我嘗試移動:

 for (var i :Number = 0; i < fireballs; i++) { 
      if (array[i] == null) { 
       trace("Error here"); 
       return; 
      } 
      trace(array[i]); 
      var mcFireball :fireball = array[i]; 
      mcFireball.moveEnemy(); 
     } 

而這正是我的moveEnemy()看起來像:

public function moveEnemy():void 
    { 
     if ((this.x + this.width > this.stage.stageWidth) || (this.x - this.width <= 0)) 
      _nEnemyMovementSpeed *= -1;   

     this.x += _nEnemyMovementSpeed; 
    } 

我確定該錯誤在功能範圍內,但我不確定我需要做些什麼才能使它們正常工作

My error is that moveEnemy() isn't a function

回答

1

好吧,我很困&這是我的頭頂(沒有Flash測試),但它應該給你一個總體思路。

mcFireball.moveEnemy();導致錯誤,因爲您試圖通過說它是mcFireball類中的函數來達到它。爲了更好地理解(例子):你有一個Game_Stages.as類文件,每個級別都是一個函數,所以運行級別5,你會說類似於你的.. Game_Stages.Level5();現在考慮是mcFireBall一個類文件?它是否具有moveEnemy功能?看看爲什麼Flash會哭?

可能的解決方案

for (var i :Number = 0; i < fireballs; i++) 
{ 
      if (array[i] == null) 
      { trace("Error here"); return; } 

      trace(array[i]); 
      var mcFireball :fireball = array[i]; 
      moveEnemy(mcFireball); //do moveEnemy func with mcFireball as input 
} 

然後,你可以做moveEnemy像下面。在這個函數中,我們現在引用相同的輸入爲「fball

public function moveEnemy(fball:Sprite):void 
{ 
     if ((fball.x + fball.width > this.stage.stageWidth) || (fball.x - fball.width <= 0)) 
     { _nEnemyMovementSpeed *= -1; }   

     else 
     {fball.x += _nEnemyMovementSpeed; } 
} 

這假定mcFireball是一個精靈(並應工作是否其庫對象或創建的代碼)

+0

這是一個影片剪輯,但它是工作謝謝你! – kevorski

+0

不用擔心,很樂意幫忙。 –