Как удалить дочерний видеоклип, созданный другой функцией - PullRequest
1 голос
/ 14 февраля 2011

Я добавил функцию слушателя для события мыши

bar.addEventListener(MouseEvent.MOUSE_OVER,mouse_over_bar);

И определил функцию

public function mouse_over_bar(ev:MouseEvent):void{

                 var hover:MovieClip=new Hvr();
                 var tween:Tween;

                addChild(hover);
                hover.x=mouseX;
                hover.y=mouseY;

                TransitionManager.start(hover,{type:Fly,direction:Transition.IN,duration:1,easing:Strong.easeInOut});
                hover.Hd1.text= xmlFile.children()[2]. @ name;
                hover.descrpt.text= xmlFile.children()[2]. @ des;

                }

Как мне удалить этот дочерний ролик мувиклипа?Я хотел бы снять ребенка, когда выхожу из бара.

Ответы [ 3 ]

1 голос
/ 14 февраля 2011

Посмотрите на метод removeChildAt () мувиклипа.Если у вас есть только один ребенок в вашем баре и слушатель ролла, это может выглядеть так:Я думал, что вы добавляете парение в бар в детстве.Если вы добавляете наведение к тому же родительскому мувиклипу, что и добавленная панель, вы должны сохранить ссылку на наведение вне функции.А если у вас много пар, вы можете сохранить их в массиве.

private var _hoverArray : Array = new Array()

public function mouse_over_bar(ev:MouseEvent):void{

                 var hover:MovieClip=new Hvr();
                 _hoverArray.push(hover);
                 var tween:Tween;

                addChild(hover);
                hover.x=mouseX;
                hover.y=mouseY;

                TransitionManager.start(hover,{type:Fly,direction:Transition.IN,duration:1,easing:Strong.easeInOut});
                hover.Hd1.text= xmlFile.children()[2]. @ name;
                hover.descrpt.text= xmlFile.children()[2]. @ des;

                }

Затем вам нужно найти способ указать объект наведения, который вы хотите удалить.Я бы предложил вам определить новый класс с именем hover, расширить MovieClip, дать ему идентификатор, а также дать вашим барам идентификатор.Так что, если вы развернетесь, вы можете найти в _hoverArray идентификатор и удалить его.

public function mouse_over_bar(ev:MouseEvent):void{
   var currentBar : BarClass = ev.target as BarClass;
   var barID : int = currentBar.id;
   var currentHover : Hover;
   for each(var h : Hover in _hoverArry)
   {
          if(h.id == barID)
          {
                 currentHover = h;
                 break;
          }
   }

   if(currentHover)
          removeChild(currentHover);
}
0 голосов
/ 15 февраля 2011

Один из способов - сохранить все ваши «зависшие» МС в массиве, а при развертывании убрать их всех сразу.Таким образом, вам не нужно отслеживать отдельные видеоклипы, которые могут стать ошибками.

private var hovers:Array = new Array();

public function mouse_over_bar(ev:MouseEvent):void{
    var hover:MovieClip = new Hvr();    
    addChild(hover);
    hovers.push(hover);
}

public function mouse_out_bar(ev:MouseEvent):void{
    while (hovers.length){
        var mc:MovieClip = hovers.pop();
        if (contains(mc)){
            removeChild(mc);
        }
    }
}
0 голосов
/ 14 февраля 2011

Я не совсем уверен, как вы структурировали свое приложение, но это должно работать.

bar.addEventListener(MouseEvent.MOUSE_OVER, onBarMouseOver); 
bar.addEventListener(MouseEvent.MOUSE_OUT, onBarMouseOut); 

public function onBarMouseOver(e:MouseEvent):void
{                  
    var hover:MovieClip = new Hvr();    
    hover.name = "hover";
    var tween:Tween;  
    addChild(hover);                
    hover.x = mouseX;     
    hover.y = mouseY;               
    TransitionManager.start(hover,{type:Fly,direction:Transition.IN,duration:1,easing:Strong.easeInOut});    
    hover.Hd1.text = xmlFile.children()[2]. @ name;                 
    hover.descrpt.text = xmlFile.children()[2]. @ des;   

}// end function

public function onBarMouseOut(e:MouseEvent):void
{   
    if(this.contains(getChildByName("hover"))
    removeChild(this.removeChild(this.getChildByName("hover")));

}// end function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...