Actionscript 3 闪光中的MouseEvent

Actionscript 3 闪光中的MouseEvent,actionscript-3,flash,apache-flex,Actionscript 3,Flash,Apache Flex,我正在尝试在flash应用程序中制作自己的按钮。下面是一些代码: addEventListener(MouseEvent.MOUSE_OUT, Out); addEventListener(MouseEvent.MOUSE_OVER, Over); ... private function Over(event:MouseEvent):void { addChild(overImage); } private function Out(event:MouseEvent):void

我正在尝试在flash应用程序中制作自己的按钮。下面是一些代码:

addEventListener(MouseEvent.MOUSE_OUT, Out);
addEventListener(MouseEvent.MOUSE_OVER, Over);

...

private function Over(event:MouseEvent):void
{
    addChild(overImage);
}

private function Out(event:MouseEvent):void
{
    removeChild(overImage);
}

当鼠标位于此按钮上方时,overImage将闪烁。看起来
Over
Out
正在调用每个帧。我做错了什么?

如果鼠标位于将出现
overImage
的点上,则该子对象将在自身上引发
mouse\u OVER
事件,从而在其父对象上引发
mouse\u OUT
事件。父级
鼠标出
将从显示列表中删除
overImage
,这将导致再次将
鼠标移到父级上,再次启动循环并使
overImage
闪烁。

如果鼠标位于将出现
overImage
的位置,然后,该子对象将在其自身上引发一个
MOUSE\u OVER
事件,从而在其父对象上引发一个
MOUSE\u OUT
事件。父级
鼠标出
将从显示列表中删除
overImage
,这将导致再次将
鼠标移到父级上,再次启动循环并使
overImage
闪烁。

因为您用Flex标记了它;为什么不使用一个

鼠标移动时,MouseOver事件将持续触发。在调用addChild之前,我将执行一项检查,以查看overImage是否已设置为父级:

private function Over(event:MouseEvent):void
{
   if(!overImage.parent){
    addChild(overImage); 
   }
}

private function Out(event:MouseEvent):void
{
    if(overImage.parent){
     removeChild(overImage);
    }
}

我怀疑这会阻止“眨眼”

因为您用Flex标记了它;为什么不使用一个

鼠标移动时,MouseOver事件将持续触发。在调用addChild之前,我将执行一项检查,以查看overImage是否已设置为父级:

private function Over(event:MouseEvent):void
{
   if(!overImage.parent){
    addChild(overImage); 
   }
}

private function Out(event:MouseEvent):void
{
    if(overImage.parent){
     removeChild(overImage);
    }
}

我怀疑这会阻止“眨眼”

> P> >考虑使用<代码> MouthEvest.RoopyOver 和<代码> MouthEngult.LoopyOuts事件。他们忽略了组件的子组件。没有任何额外的检查和丑陋的把戏


顺便说一下,按钮支持皮肤和状态,所以你可以把你的图像包含到“Over”状态。

< P>只考虑使用<代码>鼠标事件。RoopyOver 和<代码>鼠标事件。他们忽略了组件的子组件。没有任何额外的检查和丑陋的把戏


顺便说一句,按钮支持外观和状态,因此您可以将图像包含到“结束”状态。

就像另一个人说的那样,使用翻滚和翻滚,或者设置按钮。mouseChildren=false

它之所以闪烁,是因为鼠标移过和鼠标移出会对该按钮的每个子项产生影响。所以,如果你有文字,或者bg图像/颜色,或者光泽,或者里面有其他元素,每次你翻过这些部分,它就会开火


因此,当您添加“overImage”时,它会出现在鼠标下方,并触发另一个mouseOut和mouseOver。同样,只需使用翻滚和翻滚,或者设置mouseChildren=false

就像另一个人说的那样,使用翻滚和翻滚,或者设置按钮。mouseChildren=false

它之所以闪烁,是因为鼠标移过和鼠标移出会对该按钮的每个子项产生影响。所以,如果你有文字,或者bg图像/颜色,或者光泽,或者里面有其他元素,每次你翻过这些部分,它就会开火


因此,当您添加“overImage”时,它会出现在鼠标下方,并触发另一个mouseOut和mouseOver。同样,只需使用翻滚和翻滚,或设置mouseChildren=false,这不是halp,但根据你的建议,我解决了我的问题。这不是halp,但根据你的建议,我解决了我的问题。