as3 RollOver动画片段菜单

时间:2009-09-20 18:35:53

标签: actionscript-3 menu rollovers

我正在尝试像www.zara.com那样做一个底层菜单。

我的代码有一个透明的动画片段,当鼠标滚过它时显示菜单,并在鼠标滚出时隐藏。

菜单显示在该透明动画片段上方,因此我可以使用翻转和翻动操作来使用透明MC来操作菜单。

这里的问题是当鼠标滚过我的菜单MC并且它表现为推出透明动画片段。

如何在没有推出第一个动画片段的情况下让鼠标滚动到另一个动画片段的动画片段上?

难以混淆吗?

感谢名单!

4 个答案:

答案 0 :(得分:0)

当MovieClip B出现在另一个MovieClip A的顶部时,MovieClip A将触发MouseEvent.ROLL_OUT事件。这是因为MovieClip B阻止MovieClip A接收任何MouseEvents(因为它在顶部)。

如果您不需要从MovieClip B接收任何MouseEvent,您可以将其mouseEnabled属性设置为false,然后其下的MovieClip A将接收MouseEvents。

此外,根据您的具体情况是否有意义,您可以将MovieClip B设为MovieClip A的子项,以便当MovieClip B模糊MovieClip A时,不会触发ROLL_OUT事件。

我希望这有助于回答你的问题。

答案 1 :(得分:0)

这是一个来自javascript技术的快速而肮脏的技巧

1。)在clipA卷展栏中构建额外的逻辑,等待一小段时间,然后在关闭之前检查鼠标是否在菜单上。

// define a boolean value for the moust beeing on the menu
public var menuOver:Boolean = false;

public function onMenuOver( event:MouseEvent ):void
{
    menuOver = true;
    // other menu code here
}

public function onMenuOut( event:MouseEvent ):void
{
    menuOver = false;
    // other menu code here
}

public function onMainClipOver( event:MouseEvent ):void
{
     // show menu code here
}

public function onMainClipOut( event:MouseEvent ):void
{
    setTimeout(execMainClipOut,100);
}

/**
 * close the menu only if the mouse is not over the menu
 */
public function execMainClipOut()
{
    if(!menuOver){
        // close the menu
    }
}

答案 2 :(得分:0)

噢!我只记得一些有趣的东西可以解决你的问题。

当触发MouseEvent.ROLL_OUT事件时,将使用具有relatedObject属性的MouseEvent对象调用侦听器函数。这是对获得鼠标焦点的对象的引用(滚动) - 在您的情况下,如果将此属性设置为其他MovieClip对象,则可以忽略该事件,然后在其他MovieClip对象滚动时手动触发事件out(以便它们推出它们)。

答案 3 :(得分:-1)

如上所述, relatedObject 完美地工作

所以例如,如果你有MovieClip A然后将Movieclip B放在最上面。 你希望Movieclip B在滚动MovieClip A时显示,并在推出Movieclip A时隐藏,

一般情况下,Movieclip B会显示但是当你将鼠标悬停在B上时,Moveclip B会消失,因为B位于A之上,会发生首次展示事件

所以在Movieclip上推出即使只是使用 if((event.relatedObject == MoveClipB) { //如果它在B上滚动,这是一个相关的对象,不做任何事情 } 其他 { //隐藏B. }

使用此功能时,B的事件仍然有效