【发布时间】:2014-04-25 20:30:55
【问题描述】:
这感觉应该很明显,但是我在处理带有动作脚本中的一系列电影剪辑的 MouseEnter 和 MouseOut 时遇到了麻烦。
我有一个用作背景的影片剪辑。在那个背景下,我添加了一个额外的影片剪辑作为一个按钮。在该按钮的 MouseEnter 上,我添加了一个附加的影片剪辑作为悬停状态,并删除了初始按钮。在 MouseOut 上,我删除了 hoverstate 按钮,并读取了原始的普通按钮。
在 90% 的情况下,它会按您的预期工作。但是另外 10% 的时间,在 MouseOut 上,MouseEnter 事件会触发,即使您的鼠标不再在按钮上,它也具有悬停状态,因此您可以这样做。
一些代码来说明,这是我首先添加的主要电影剪辑:
package {
import flash.display.MovieClip;
public class Menu_Main extends MovieClip {
var backdrop:Backdrop;
public function Menu_Main() {
backdrop = new Backdrop();
addChild(backdrop);
}
}
}
这是我后续的影片剪辑逻辑,处理我的菜单按钮的逻辑: 包{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Backdrop extends MovieClip {
var button:MyMenuButton;
var button_hover:MyMenuButton_Over;
public function InitializeButton()
{
button = new MyMenuButton();
button.addEventListener(MouseEvent.MOUSE_OVER, Button_MouseOver);
addChild(button);
}
function Button_MouseOver(event:MouseEvent):void
{
removeChild(button);
button_hover = new MyMenuButton_Over();
button_hover.addEventListener(MouseEvent.ROLL_OUT, ButtonHover_MouseOut);
addChild(button_hover);
}
function ButtonHover_MouseOut(event:MouseEvent):void
{
removeChild(button_hover);
addChild(button);
}
public function Backdrop() {
InitializeButton();
}
}
}
这里的代码不包括我在合适的地方删除 EventListeners 的尝试。无论添加和删除 EventListener 的组合如何,结果都是一样的。我还尝试了一些 ROLL_OUT 和 ROLL_OVER 的组合,而不是鼠标版本。我不能说我已经完美地使用了它们,但结果还是一样的。
任何人都可以就处理此问题的正确方法提供一些建议吗?
【问题讨论】:
标签: actionscript-3 flash mouseover mouseout