2013-09-06 4 views
0

레벨 선택 화면을 만들고 있는데 각 레벨마다 다른 레벨 번호를 표시하려면 텍스트 필드가 필요합니다. 여기서 내가 잘못하고있는 것을 실제로 볼 수는 없지만, 내가 한 일을 검토하고 관련 코드를 게시 할 것입니다.for 루프의 버튼 텍스트 필드 변경

버튼 클래스가 있고 (링크 된) 심볼 안에 동적 텍스트 필드가 있습니다. 나는 관련성이 높은 두 클래스 인 LevelSelectScreenLevelSelectButtons을 가지고 있습니다. 단순히 levelText.text = "Wanted Text"을 수행하여 LevelSelectButtons 클래스 내에서 텍스트를 변경하면 텍스트를 변경하는 것이 매우 쉽다는 생각이 들었습니다. 여기에서 levelText은 내 버튼의 인스턴스 이름 (버튼의 그래픽 상단에있는 텍스트 필드)입니다. 불행히도, 이렇게 오 이런 및 성가신 오류가 있습니다. TypeError : 오류 # 1009 : null 개체 참조 속성 또는 메서드를 액세스 할 수 없습니다.

내 루프 중에 내 LevelSelectScreen 클래스에서 동일한 작업을 실제로 시도했지만 동일한 오류가 발생했습니다. 이 레벨 텍스트를 작동시키는 방법에 대한 도움말은 크게 감사드립니다! 다음은 관련 코드입니다.

LevelSelectScreen

public class LevelSelectButtons extends SimpleButton { 

     public var levelNumber:int; 
     public var levelSelectScreen:LevelSelectScreen; 

     public function LevelSelectButtons(i) { 

      x = 200; 
      y = 100 + 50*i; 
      addEventListener(MouseEvent.CLICK,LevelSelectClicked,false,0,true) 
      levelNumber = i; 
      levelText.text = "Level" + i; 
     } 

    } 

LevelSelectScreen

public class LevelSelectScreen extends MovieClip { 

    public var levelSelectButtons:LevelSelectButtons; 
    public var mainMenuButton:MainMenuButton; 

    public function LevelSelectScreen() { 

      for (var i:int = 1; i<=2; i++) 
      { 
       levelSelectButtons = new LevelSelectButtons(i); 
       addChild(levelSelectButtons); 
      } 
    } 

} 

답변

2

SimpleButton에는 동적 텍스트 필드를 사용할 수 없습니다.
귀찮아, 알아.

간단한 수정으로 LevelSelectButton을 확장하는 대신 SimpleButton을 래핑하는 것입니다. 그런 다음 텍스트 필드가 텍스트가없는 SimpleButton의 맨 위에있는 LevelSelectButton 내부에있게됩니다. (가 SimpleButton에 마우스 이벤트에 방해가되지 않도록 텍스트 필드에 false로 mouseEnabled을 설정해야합니다.

더 복잡한 옵션을 사용자 정의 버튼 클래스를 작성하는 것입니다.
그것은 실제로 어렵지 않다 그러나 여기에서하려고하는 것에 대해 과도한 행동을 할 수도 있습니다.

+1

이 답변에 추가하려면 SimpleButton은 DisplayObject이지만 DisplayObjectContainer가 아니므로 TextField와 같은 다른 DisplayObject 객체를 포함 할 수 없습니다. 텍스트 필드가 th로 "그려집니다" e SimpleButton을 자식으로 추가하는 대신 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/SimpleButton.html – Ohas

+0

훌륭한 답변, 완벽하게 감사함 =) – spaderdabomb

-1

의 당신은 levelText 선언하지 않았기 때문에 변수 당신은 그것을 액세스하려고,이를위한 속성에 액세스 할 수 없습니다 또는 님의 방법 l 객체 참조.

+0

응답을 downvote하지 않았지만 답은 해결책을 찾는데 도움이 될뿐 아니라 무엇이 잘못 됐는지를 설명하는 것이 아니라 오류 메시지를 이해합니다. .. 꽤 많이 당신의 전체 답변 – spaderdabomb