Actionscript 3 如何处理具有重叠文本字段的鼠标悬停事件?

Actionscript 3 如何处理具有重叠文本字段的鼠标悬停事件?,actionscript-3,textfield,mouseover,Actionscript 3,Textfield,Mouseover,我有一个表示选项卡的按钮的水平堆栈,每个按钮内部都有一个TextField,该字段大于按钮的尺寸,因此它们重叠。如下所示(虚线是一个文本字段,红色框是由于重叠而无法进行鼠标悬停的区域): 这些按钮中的每一个都是TabButton的实例,其类定义如下: package src { import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; im

我有一个表示选项卡的按钮的水平堆栈,每个按钮内部都有一个
TextField
,该字段大于按钮的尺寸,因此它们重叠。如下所示(虚线是一个
文本字段
,红色框是由于重叠而无法进行鼠标悬停的区域):

这些按钮中的每一个都是
TabButton
的实例,其类定义如下:

package src
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.text.TextField;

    public class TabButton extends MovieClip
    {
        // Stage Instances
        public var mcHitZone:MovieClip;
        public var mcText:TextField;

        public function TabButton()
        {
            super();

            addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, false, 0, true);
        }

        private function onAddedToStage(e:Event):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

            // Disable mouse input on everything except for the hit zone since that's where mouse handling should be done.
            mcText.mouseEnabled = false;

            mcHitZone.addEventListener(MouseEvent.ROLL_OVER, onMouse, false, 0, true);
        }

        private function onMouse(e:MouseEvent):void
        {
            trace("Mouse event: " + name + " " + e.type);
        }
    }
}
每个TabButton都有一个
mcHitZone
,我将鼠标处理程序附加到该区域,这是上图中的黑色区域。由于
TextField
比按钮本身大得多,因此需要完全忽略它以进行鼠标输入处理,因此我使用
mcText.mouseEnabled=false将其关闭
,当在单个按钮内进行鼠标移动时,它似乎起作用,但当鼠标移动到重叠区域(红色框)上时,
文本字段将阻止来自另一个按钮的鼠标输入

是否有任何方法可以使
TextField
不会阻止鼠标输入与之重叠的任何内容


我已经上传了FLA,因此我一直在用它进行测试。如果您运行它,它将在您滚动特定按钮时跟踪。如果尝试将鼠标悬停在最左边按钮的红色区域,则该按钮将无法工作。

您的按钮有三个movieClips、mcHitZone、mcText和TabButton本身。 因此,当您关闭两个按钮时,上tabButton(不是它的子mcText)将影响下tabButton

我建议你的tabButton不要扩展movieClip,只需使用mcHitZone作为按钮的皮肤,然后将其添加到你的舞台上


正如评论所说,您还可以将tabButton的mouseEnabled设置为false。我混淆了MouseeEnabled和mouseChildren。

问题是:为什么文本字段重叠?如果你不需要那个空白,只要把它去掉,问题就会消失!不幸的是,我别无选择。我不能详细说明,但文本字段必须是这样的。这是我正在使用的实际库的一个大大简化的示例!没错,TabButton的大小相当于最大的子剪辑的大小,也就是mcText,对吗?如果TabButton没有从MovieClip扩展,那么我应该在哪里添加mcHitZone和mcText?他们一定是什么东西的孩子。是的。你可以将它们添加到你添加的选项卡按钮中。好的,我想我明白了。我要做一点实验。谢谢。正确的解决方案应该是
this.mouseEnabled=false
TabButton
构造函数中,通过这种方式,TabButton对鼠标的唯一反应部分将是
mcHitZone
@Vesper你说得对!出于某种原因,我认为在
TabButton
上设置它会对所有的孩子完全禁用它,但我想这就是为什么会有一个单独的
mouseChildren
标志的原因。谢谢你。