我为鼠标事件添加了一个监听器功能
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;
}
我如何删除这个儿童movieclip悬停? 当我从酒吧里滚出来时,我想取下孩子。
答案 0 :(得分:1)
查看MovieClip的removeChildAt()方法。 如果你的酒吧里只有一个孩子和一个推出听众,那可能就是这样:
public function mouse_over_bar(ev:MouseEvent):void{
var currentBar : MovieClip = ev.target as MovieClip;
currentBar.removeChildAt(0);
}
修改强>
对不起,我以为你小时候就把悬停添加到酒吧。如果在添加条形图时将悬停添加到同一父动画片段,则必须在函数外部存储对悬停的引用。如果你有很多悬停,你可以将它存储在一个数组中。
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,给它一个ID,并给你的酒吧一个ID。因此,如果您推出,您可以在_hoverArray中搜索ID并将其删除。
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);
}
答案 1 :(得分:0)
我不太确定你是如何构建应用程序的,但这应该可行。
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
答案 2 :(得分:0)
一种方法是将所有“悬停”MC保留在数组中,并在卷展栏中一次性删除它们。这样您就不需要跟踪可能变成越野车的各个动画片段。
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);
}
}
}