Flash AS3由于movieclip重叠导致鼠标悬停问题

Flash AS3由于movieclip重叠导致鼠标悬停问题,flash,actionscript-3,flash-cs4,Flash,Actionscript 3,Flash Cs4,我正在做一个屏幕上有很多不同按钮的东西。按钮需要使用movieclips制作,而不是实际的“按钮” 我正在使用FlashCS4和ActionScript3 我在鼠标上方的按钮周围创建了发光效果。这非常有效,只是辉光效果为按钮创建了一个约为实际按钮宽度和高度两倍的点击框。我做了一些研究,最后在按钮符号内制作了一个符号,它只包含我想要触发按钮的点击区域。这对于触发按钮非常有效。现在,当我将鼠标移到按钮上时,它们仅在我点击实际的按钮图形本身时亮起,而不是在发光动画中点击按钮周围的框时亮起。但是,问题在

我正在做一个屏幕上有很多不同按钮的东西。按钮需要使用movieclips制作,而不是实际的“按钮”

我正在使用FlashCS4和ActionScript3

我在鼠标上方的按钮周围创建了发光效果。这非常有效,只是辉光效果为按钮创建了一个约为实际按钮宽度和高度两倍的点击框。我做了一些研究,最后在按钮符号内制作了一个符号,它只包含我想要触发按钮的点击区域。这对于触发按钮非常有效。现在,当我将鼠标移到按钮上时,它们仅在我点击实际的按钮图形本身时亮起,而不是在发光动画中点击按钮周围的框时亮起。但是,问题在于,出于某种原因,动画中的框仍然阻止在附近的按钮上检测鼠标移动(如果框与按钮重叠)

这听起来可能让人困惑,因此下面是一张图片:

  • 绿色区域定义鼠标将激活光晕的位置 动画

  • 红色区域定义辉光动画符号的实际长方体

  • 黄色区域定义按钮中不显示的部分 激活光晕动画,因为红色框正在阻止光晕 鼠标悬停事件不会被触发

  • 我省略了左边按钮的红色框,以便更容易看到问题,但是请注意,实际上在两个按钮周围都有一个框,右边的按钮只是放在左边按钮之后的舞台上,导致它的框位于左边按钮的上方

注意:点击区域和动画都已包含在按钮符号内各自独立的符号中。将动画符号的mouseEnabled和mouseChildren设置为false似乎并不像我希望的那样(基于对这个问题的研究)

注意:当鼠标移动到红色区域时,动画不会激活(并且不应该激活),它只在鼠标移动到绿色区域时激活,这是所需的行为,唯一的问题是我根本不希望鼠标事件检测到红色框

下面是按钮类的代码:

package classes{

    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.events.Event;
    public class glowing_place_marker extends MovieClip {

        public static var instances:Array = new Array();
        public var is_playing:Boolean=false;
        private var is_mouse_over:Boolean = false;
        private var animation:MovieClip;

        public function glowing_place_marker() {

            this.animation = this.place_marker_animation;
            this.animation.stop();
            this.animation.mouseEnabled = false;
            this.animation.mouseChildren = false;   

            self:instances.push(this);
            this.place_marker_hit.addEventListener(MouseEvent.MOUSE_OVER, roll_over_handler);
            this.place_marker_hit.addEventListener(MouseEvent.MOUSE_OUT, roll_out_handler);

        }

        public function roll_over_handler(e:MouseEvent) {
            this.animation.play();      
            this.is_playing=true;
            this.is_mouse_over = true;

        }

        public function roll_out_handler(e:MouseEvent) {

            stage.addEventListener(Event.ENTER_FRAME, checkFrame);
            this.is_mouse_over = false;
        }

        function checkFrame(event:Event):void {
            if (!this.is_mouse_over) {
                if (this.animation.currentFrame==1) {
                    stage.removeEventListener(Event.ENTER_FRAME, checkFrame);   
                    this.animation.stop();              
                    this.is_playing = false;

                }
            }
        }

    }

}
有人能告诉我如何让动画框(红色框)不阻塞它下面的按钮吗?(有效地使红色框无法被鼠标事件检测到,因此单击、鼠标悬停等会直接进入下方的项目。)


提前感谢。

尝试在包含按钮点击区域的容器
DisplayObject
(带发光的)上设置
mouseEnabled=false
。您仍然希望离开
mouseChildren=true
。这样,光晕将不再阻止鼠标事件

mouseEnabled
mouseChildren
的有用之处在于,您可以选择仅禁用容器,或仅禁用容器的子对象

这是一本好书:


我不完全明白你的意思。我创建了一个包含两层的符号(movieClip)。一层中有一个包含正确HIT区域的符号,另一层中有一个包含动画的符号,该动画由错误HIT区域绑定。我尝试过将不同的东西设置为“mouseEnabled=false”,但都不起作用。你能举个代码示例吗?啊,我明白了。我需要做
mouseEnabled=false,然后在动画本身上执行
mouseEnabled=false
,但不要使用hitArea。“这样做对我很有效,谢谢你。”顺便说一句,乔纳森在问题中的形象很棒!