Flash 如何删除由其他函数创建的子电影剪辑
我为鼠标事件添加了一个侦听器函数Flash 如何删除由其他函数创建的子电影剪辑,flash,apache-flex,actionscript-3,Flash,Apache Flex,Actionscript 3,我为鼠标事件添加了一个侦听器函数 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(hove
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;
}
我如何删除这个儿童电影悬停?
当我从吧台上滚出来时,我想把chil去掉。看看MovieClip的removeChildAt()方法。
如果你的酒吧里只有一个孩子和一个滚动听众,可能是这样的:
public function mouse_over_bar(ev:MouseEvent):void{
var currentBar : MovieClip = ev.target as MovieClip;
currentBar.removeChildAt(0);
}
编辑:
呃,对不起,我以为你小时候在酒吧里加了悬停。如果将悬停添加到与添加条相同的父movieclip,则必须在函数外部存储对悬停的引用。如果有多个悬停,可以将其存储在数组中
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);
}
请看MovieClip的removeChildAt()方法。
如果你的酒吧里只有一个孩子和一个滚动听众,可能是这样的:
public function mouse_over_bar(ev:MouseEvent):void{
var currentBar : MovieClip = ev.target as MovieClip;
currentBar.removeChildAt(0);
}
编辑:
呃,对不起,我以为你小时候在酒吧里加了悬停。如果将悬停添加到与添加条相同的父movieclip,则必须在函数外部存储对悬停的引用。如果有多个悬停,可以将其存储在数组中
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);
}
我不太确定您是如何构建应用程序的,但这应该可以工作
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
我不太确定您是如何构建应用程序的,但这应该可以工作
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
一种方法是将所有“悬停”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);
}
}
}
一种方法是将所有“悬停”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);
}
}
}
我不确定这是否有效。将
悬停
显示对象添加到当前实例中,而不是添加到栏
显示对象中。基本上你不能删除悬停
,因为它不是条
的子项,至少在我看来是这样。我不确定这是否有效。将悬停
显示对象添加到当前实例中,而不是添加到栏
显示对象中。基本上,你不能删除悬停
,因为它不是条
的子项,至少在我看来是这样。