2011-12-08 43 views
1

我遇到一個問題,我創造了這個的addChild功能(該功能位於文檔類):的AddChild功能錯誤

public function enemySpawn(locX:Number,locY:Number) 
{ 
    stage.addChild(this.basicEnemy); 
    this.basicEnemy.x = locX; 
    this.basicEnemy.y = locY; 
} 

基本上,只要我調用這個函數從我的文檔類的構造函數,它只會替換前一個孩子和下一個孩子。有什麼我可以解決這個問題嗎?

這裏的文檔類以防萬一,如果你們需要它:

package com.basicSurvivalEngine.documentClass 
{ 
    import com.basicSurvivalEngine.assetHolders.*; 
    import flash.events.*; 
    import flash.display.*; 

    public class Document extends MovieClip 
    { 
     public var mcMain:Player; 
     public var basicEnemy:BasicEnemy; 
     public var survivalLevel:MovieClip; 
     public var wallCollisionArray:Array = new Array(); 

     public function Document() 
     { 
      mcMain = new Player(this); 
      basicEnemy = new BasicEnemy(this); 
      addEventListener(Event.ADDED_TO_STAGE,init); 
      // constructor code 
     } 
     public function init(event:Event) 
     { 
      addEventListener(Event.ENTER_FRAME,update); 
      addEventListener(Event.ENTER_FRAME,levelHandler); 
      addEventListener(Event.ENTER_FRAME,levelTransition); 
      addEventListener(Event.ENTER_FRAME,vCamMovement); 
      this.enemySpawn(-2800, 650); 
      this.enemySpawn(-2700, 650); 
      this.enemySpawn(-2600, 650); 
      this.enemySpawn(-2500, 650); 
      addChild(mcMain); 
      mcMain.x = 225; 
      mcMain.y = 100; 
     } 
     public function update(event:Event) 
     { 

     } 
     public function levelHandler(event:Event) 
     { 
      this.survivalLevel = this["survivalLevel"]; 
      for (var i:int = numChildren - 2; i >= 0; i--) 
      { 
       var child:DisplayObject = getChildAt(i); 
       if (child.name == "wallCollision") 
       { 
        this.wallCollisionArray.push(child); 
       } 
      } 
     } 
     public function levelTransition(event:Event):void 
     { 

     } 
     public function vCamMovement(event:Event):void 
     { 
      this.mcMain.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15; 
      this.mcMain.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15; 
      this.survivalLevel.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15; 
      this.survivalLevel.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15; 
      this.basicEnemy.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15; 
      this.basicEnemy.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15; 
     } 
     public function enemySpawn(locX:Number,locY:Number) 
     { 
      stage.addChild(this.basicEnemy); 
      this.basicEnemy.x = locX; 
      this.basicEnemy.y = locY; 
     } 

    } 

} 

回答

2

爲了什麼我可以觀察你只是增加了舞臺的同一對象(basicEnemy)每次調用enemySpawn時間。那是你的問題,如果你想有一個新的敵人催生它應該是一個新的obj

0

試試這個:

protected var enemies:Array = new Array(); 
    public function enemySpawn(locX:Number,locY:Number) 
    { 
     var basicEnemy = new BasicEnemy(this); 
     stage.addChild(basicEnemy); 
     basicEnemy.x = locX; 
     basicEnemy.y = locY; 
     enemies.push(basicEnemy); 
    } 

    public function vCamMovement(event:Event):void        
    { 
      this.mcMain.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15; 
      this.mcMain.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15;            
      this.survivalLevel.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15;             this.survivalLevel.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15;            
      foreach(var enemy in eneimes) { 
       enemy.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15; 
             enemy.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15; 
      }        
     } 

刪除public var basicEnemy:BasicEnemy;並創建一個新的敵人

+0

你是什麼創造的意思一個新的敵人? – Blaze356

+1

BasicEnemy的新實例。您正在舞臺上添加相同的對象。所以你需要使用Basic Enemy的新實例 – Joe

+0

......我需要用什麼代碼來替換'public var basicEnemy:BasicEnemy;'? – Blaze356