2013-01-07 1 views
0

발신자 오류의 자식이어야하는 RemoveChild, 여기에 내가 내가 텍스트 추가 기능을 삭제 한AS3이 제공되는 DisplayObject입니다 내가 문제가 생겼어요

public var monsterArray:Array; 
    public var score:Number; 

    public function MonsterManager() 
    { 
     score = 0; 
     monsterArray = new Array(); 
    } 

public function spawnMonster(waveNumber:Number):void 
    { 
     //This code needs to choose the ID not the monster itself 
     var id:Number; 
     var meleeRanged = Math.floor(Math.random()*2) 
     trace("meleeRanged :"+meleeRanged); 
     id = Math.floor(Math.random()*3)+1; 
     switch(id) 
     { 
      case 1: var newMonster1:Monster1 = new Monster1(); 
         newMonster1.monsterSetup(waveNumber, id); 
         monsterArray.push(newMonster1); 
         addChild(newMonster1); 
       break; 
     } 

    } 

public function update():void 
    { 
     //trace("Go To Update"); 
     var i:number; 
     i = 0; 
     for each (var monster:Monster in monsterArray) 
     //monster needs a bool variable to say if it is active, if it is dont reuse, 
     //if it is not activate, we can use setup and re use it, 
     { 
      monster.update(); 
      if(monster.hp <= 0) 
      { 
       score += 10; 
       removeChild(monster); 
       array.splice(i,1); 
       //monster.x = -1000; 
       //monster.hp = 1; 
       i++; 
      } 
     } 
    } 

을 사용하고 코드입니다 t는 문제 : 원인,하지만 난이 removeText 기능 APON 호출 할 때, 나는 순식간에이 오류가

The supplied DisplayObject must be a child of the caller. 

배열 공개, 그래서 내가 할 수 누군가가 삭제 될 수없는 이유를 잘 모르겠어요 이것 좀 좀 보여 줘.

건배.

public function update(heroGra:HeroDisplay):void 
    { 
     //trace("Go To Update"); 
     var count:Number = monsterArray.length; 
     var monster:Monster; 

     for(var i:int = 0; i<count; i++) 
     { 
      monster = monsterArray[i]; 
      monster.update(heroGra); 


      if(monster.hp <= 0) 
      { 
       score += 10; 
       removeChild(monster); 
       monsterArray.splice(i,1); 
       i--; 
      } 
     } 
    } 

캔버스 아래

새로운 코드입니다.

monsterArray에 2 개 이상의 몬스터가 있으면 오류가 발생합니다. 어떻게 멈추게 할 수 있습니까?

+0

'removeChild()'는 스테이지에서 무언가를 제거하는 데 사용됩니다 (예 : 볼 수있는 화면상의 것). 이전에 추가하지 않은 것을 제거 할 수 없습니다 (addChild()를 사용하여 무언가를 추가했습니다). 배열이나 무대에서 무언가를 제거하려고합니까? :) 더 많은 코드를 표시 할 수 있습니다. –

답변

0

각 기능에 대해 잘하고 있는지 확실하지 않습니다. 다음과 같이 해보십시오 :

public function update():void 
{ 
    var count:Number = monsterArray.length; 
    var monster:Monster; 

    for(var i:int = 0; i<count; i++) 
    { 
     monster = monsterArray[i]; 
     monster.update(); 

     if(monster.hp <= 0) 
     { 
      score += 10; 
      removeChild(monster); 
      array.splice(i,1); 
      count--; 
      i--; 
     } 
    } 
} 
+0

그래, addText라는 메서드가 있는데 배열에 텍스트를 추가합니다. 내 질문을 업데이트했습니다. – Canvas

+0

위의 코드를 수정하면 사과드립니다. D – Canvas

+0

addChild를 사용할 수 없습니다. DisplayObject가 DisplayObject가 아니므로 DisplayList에 대한 문자열입니다. 대신 TextField 만들기 ... – 3vilguy

관련 문제