问题描述
|
我想知道您是否可以提供一些我认为相对简单的功能,但令人沮丧的是!
我有一个影片剪辑列表,每个剪辑包含一个实例名称为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;
}
我敢肯定有更好的方法可以完成此操作-非常感谢收到任何建议!
谢谢
保罗
解决方法
evt.currentTarget.name
表示,现在,您定位的是容器对象(pcs
),而不是内容(hr_pc,m_pc
等)。这是evt.target
和evt.currentTarget
之间的主要区别。如果您跟踪currentTarget名称,则每个预期目标的名称都将相同。
因此,要进行纠正,您当然可以使用
evt.target.name
但是,如果将鼠标悬停在按钮上,则可能会遇到问题,因为目标将不再是按钮的直接父对象(而是按钮本身),并且该按钮可能会再次触发trigger7ѭ。
我可能会朝着另一个方向发展:编写一个包含按钮及其自己的侦听器的类。如果存在很多共享行为,那么这将是一个不错的计划(但是根据您的需要,可能没有)。
所以,是的,请阅读currentTarget与target