【问题标题】:Actionscript 3 mouseover issueActionscript 3鼠标悬停问题
【发布时间】:2013-09-29 13:39:29
【问题描述】:

您好,我是 actionscript 的新手,非常感谢任何帮助。

基本上我有一部电影有 2 层,其中 1 层闭着眼睛,另一层睁着眼睛。

所以功能应该是电影开始时他们的眼睛是闭着的,当鼠标在电影上滚动时眼睛会睁开,然后当鼠标离开电影时他们会再次关闭。

这是我目前拥有的代码,但它不起作用:

package 
{

import flash.display.MovieClip;
import flash.events.MouseEvent;

eyes_closed.addEventListener(MouseEvent.MOUSE_OVER, hideEyes);
eyes_closed.addEventListener(MouseEvent.MOUSE_OUT, openEyes);

function hideEyes(event:MouseEvent):void {
  eyes_open.visible = true;
}

function openEyes(event:MouseEvent):void {
  eyes_closed.visible = true;
}

}

我做错了什么?

【问题讨论】:

  • 至少你不听MouseEvent.MOUSE_OUT事件来“闭上”眼睛。此外,您最好为 eyes_closedeyes_open 使用一个容器,该容器将包含一个或另一个,并将侦听器附加到该容器。

标签: actionscript-3 flash actionscript


【解决方案1】:

你忘了把眼睛藏起来。

function hideEyes(event:MouseEvent):void {
  eyes_open.visible = true;
  eyes_closed.visible = false;
}

function openEyes(event:MouseEvent):void {
  eyes_closed.visible = true;
  eyes_open.visible = false;
}

另一个选项:使用setChildIndex更改图层顺序

【讨论】:

    【解决方案2】:

    当你让另一个可见时,你想让一个不可见。

    package 
    {
    
    
    
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
    
        eyes_closed.addEventListener(MouseEvent.MOUSE_OVER, hideEyes);
        eyes_closed.addEventListener(MouseEvent.MOUSE_OUT, openEyes);
    
        function hideEyes(event:MouseEvent):void {
          eyes_open.visible = true;
          eyes_closed.visible = false;
        }
    
        function openEyes(event:MouseEvent):void {
          eyes_closed.visible = true;
          eyes_open.visible = false;
        }
    
    }
    

    【讨论】:

      【解决方案3】:

      一个简单的解决方案(没有双关语)是使用SimpleButton 类。它允许您创建一个显示对象,该对象在内部根据 3 种状态(正常、鼠标悬停和鼠标按下)显示不同的显示对象。此外,第 4 个显示对象决定了“命中区域”(通常与用于正常状态的显示对象相同)。

      例子:

      import flash.display.SimpleButton;
      
      var closed : MovieClip = new closedMC();
      var open : MovieClip = new openMC();
      
      var button : SimpleButton = new SimpleButton(closed, open, open, closed);
      

      但有一件事:如果您将 MovieClip 与动画一起使用,当状态发生变化时(例如,当您按下按钮时),MovieClip 将从第 1 帧重新开始。

      【讨论】:

        【解决方案4】:

        有几个选项可以做你正在尝试的事情,一个简单的解决方案是:

        创建 2 层精灵 - 一层闭着眼睛,另一层睁着眼睛(可能你已经完成了)

        将 2 个事件侦听器添加到底部精灵 (eyes_closed) - 鼠标悬停 ->显示 eyes_open 、 mouse_out -> 隐藏 eye_open

        现在这很重要 - 在你的 eyes_open 精灵(2 个中的顶部之一)上添加

        eyes_open.mouseEnabled = false
        eyes_open.mouseChildren = false
        

        【讨论】:

        • 还有一点值得一提的是,电影片段播放的眼睛会断断续续地眨眼,这样会有影响吗?
        • 是鼠标悬停在眼睛上播放还是一直播放?
        • 它一直在播放。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        • 1970-01-01
        • 2018-11-07
        • 1970-01-01
        相关资源
        最近更新 更多