Flash AS3事件传播

Flash AS3事件传播,flash,actionscript-3,Flash,Actionscript 3,我想知道你是否能帮我做一些我认为相对简单但令人沮丧的事情 我有一个电影剪辑列表,每个剪辑都包含一个带有实例名Mbtn的按钮。我希望该按钮仅在鼠标悬停在父剪辑上时显示。该结构基本上是一个名为pcs的父剪辑,5个子剪辑(命名如下),每个子剪辑包含一个实例名为mBtn的按钮。这是我的密码- hr_pc.mBtn.visible=false; m_pc.mBtn.visible=false; me_pc.mBtn.visible=false; d_pc.mBtn.visible=false; di_pc

我想知道你是否能帮我做一些我认为相对简单但令人沮丧的事情

我有一个电影剪辑列表,每个剪辑都包含一个带有实例名Mbtn的按钮。我希望该按钮仅在鼠标悬停在父剪辑上时显示。该结构基本上是一个名为pcs的父剪辑,5个子剪辑(命名如下),每个子剪辑包含一个实例名为mBtn的按钮。这是我的密码-

hr_pc.mBtn.visible=false;
m_pc.mBtn.visible=false;
me_pc.mBtn.visible=false;
d_pc.mBtn.visible=false;
di_pc.mBtn.visible=false;




pcs.addEventListener(MouseEvent.ROLL_OVER, mOver);
pcs.addEventListener(MouseEvent.ROLL_OUT, mOut);

function mOver(evt:MouseEvent):void
{
var overNow = evt.currentTarget.name;
overNow.mBtn.visible=true;


}
function mOut(evt:MouseEvent):void
{
var overNot = evt.currentTarget.name;
overNot.mBtn.visible=false;
} 
我相信有一个更好的方法来做到这一点-任何建议非常感谢收到

谢谢 保罗

这意味着,您现在的目标是容器对象(
pc
),而不是内容(
hr\u pc,m\u pc
等)。这是
evt.target
evt.currentTarget
之间的关键区别。如果跟踪currentTarget名称,则每个目标的名称都是相同的。 因此,为了纠正,您当然可以使用

evt.target.name
但是,如果将鼠标悬停在按钮上,可能会出现问题,因为目标将不再是按钮的直接父级(它将是按钮本身),并且按钮可能会再次触发
visible=false

我可能会选择另一个方向:编写一个包含按钮及其自己的侦听器的类。如果有很多共同的行为,这将是一个很好的计划(但根据您的需要,可能不是)


那么,是的,请仔细阅读

你到底在问什么?我从你的帖子中所了解到的是,你发布的代码“令人沮丧”。说真的,@u asMan是对的:时间线代码很糟糕,必须不惜一切代价避免。难道不是
evt.target.name
只是一个字符串吗?应该是'evt.target'以获取对DisplayObject的引用。@alxx=我正在引用OP的帖子-他似乎在他的逻辑中使用了实例名,我只是跟着它。但是,是的,你绝对是对的=名称prop只是一个字符串。
evt.target.name