2012-02-24 4 views
0

나는 mc라는 컨테이너를 가지고 있는데, 그 안에는 옵션의 벽을 만들기 위해 영화 클립 격자가 생성됩니다. .. 제공된으로 DisplayObject는 호출자의 자식이어야합니다제공된 DisplayObject는 호출자의 자식이어야합니다.

코드는 다음과 같습니다 : 오류 # 2025 :이 옵션 중 하나를 선택하면이 메시지가 나타납니다

 

    In the Class iniciarApp I've this: 

     var mc:MovieClip = new MovieClip(); 
     var grilla:Grilla = new Grilla(); 

    mc.x = 0; 
    mc.y = 0; 
    mc.name = "square"; 
    addChild(mc); 

    grilla.name = "grilla"; 
    grilla.x = mc.x; 
    grilla.y = mc.y; 
    mc.addChild(grilla); 


---------- 


    in Grilla.as: 

    public class Grilla extends MovieClip { 

     private var boxNum:int = 48; 
    private var cols:int = 6; 
    private var rows:int = Math.ceil(boxNum/cols); 
    private var boxCount:int = 0; 

    public function Grilla(){ 

      for (var py:int = 0; py < rows; py++) { 

     for (var px:int = 0; px < cols; px++) { 

      var caja:clip = new clip(); 

      caja.x = -115 + caja.width * px; 
      caja.y = -150 + caja.height * py; 
      caja.name = "opcion" + (py + 1); 
      caja.mouseChildren = false; 

      var contentText = new TextField(); 
      var formato = new TextFormat(); 
      formato.size = 14; 
      contentText.defaultTextFormat = formato; 

      contentText.width = 36; 
      contentText.height = 34; 
      contentText.x = -10; 
      contentText.y = -10; 

      for (var u:uint = 0; u < boxNum; u++) { 
       contentText.text = "" + u; 
      } 

      addChild(caja); 
      caja.addChild(contentText); 

      if (boxCount < boxNum) { 

      caja.buttonMode = true; 
      caja.addEventListener(MouseEvent.CLICK, seleccionarOpcion); 

      } 

      boxCount++; 

      } 

      } 

      var barra:score = new score(); 
      barra.x = 80; 
      barra.y = -200; 
      barra.puntajeTXT.text = "hola"; 
      addChild(barra); 

     } 


     private function seleccionarOpcion(m:MouseEvent):void 
     { 
      TweenMax.to(MovieClip(m.target), 0.5, {scaleY: -1}); 
      m.target.removeEventListener(MouseEvent.CLICK, seleccionarOpcion); 
      m.target.buttonMode = false; 

      var opcionABuscar:String; 
      opcionABuscar = m.currentTarget.name; 


      var opt:String = opcionABuscar.substring(6); 


    **[HERE] i need to remove the instance of grilla created in the other class** 

     **m.currentTarget.parent.parent.removeChild(grilla);** << this is not working  


    var trivia:generarTrivia = new generarTrivia(opt); 

    trivia.x = 0; 
    trivia.y = 0; 
    trivia.name = "trivia"; 
    addChild(trivia); 

     } 

    } 


답변

0

그것은 위의 코드에서 분명하지 않다 그물 "grilla"가 실제로 언급하고있는 것. 당신이 grilla을 제거하려는 경우

, 당신은 쓸 수 :

grilla.parent.removeChild(grilla); 

잘 모르겠어요 그건 당신이 뭘 하려는지 있는지. 방금 클릭 한 개체를 제거하려는 경우, 시도 :

m.currentTarget.parent.removeChild(m.currentTarget); 

업데이트을 : 좋아, 내가 지금 뭘 하려는지를 참조하십시오.

"그릴라"의 현재 인스턴스를 나타 내기 위해 키워드 "this"를 사용하고자합니다.

이 시도 :

this.parent.removeChild(this); 
+0

첫 번째 코드로 시도해도 아무런 변화가 없습니다. Line 75 \t 1120 : 정의되지 않은 속성 grilla 액세스. – m4g4bu

+0

더 많은 정보를 제공해야합니다. 객체 그릴을 포함하는 나머지 코드 게시 – shackleton

+0

코드 – m4g4bu

0

을 parent.removeChild (이) 시도;

가장 깨끗한 방법은 아니지만. iniciarApp에서들을 수있는 이벤트를 보내는 것이 좋습니다.

+0

grilla (addEventListener (iniciarApp.removeChild (this), detectEvent) 및 grilla.as의 다음 코드를 만들 때 이벤트를 보내야한다는 것을 의미합니다. private function detectedEvent : 이벤트) : 무효 { } 또는 당신은 무엇을 제안 – m4g4bu

+0

당신이 grilla을 만들 때 grilla.addEventListener (SomeEvent.STRING, removeGrilla) 같은 것을 할 것입니다하며에서 제거 할 것이다 방법 인 removeGrilla를? 표시 목록을 삭제하고 수신기를 제거한 다음 Grilla의 인스턴스에서 dispatchEvent (new SomeEvent (SomeEvent.STRING)); – Senekis

+0

parent.removeChild (이)를 시도했지만 작동하지 않았습니다. – m4g4bu

관련 문제