0

嗨,我是 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;
}

}

我究竟做错了什么?

4

4 回答 4

1

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

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

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

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

eyes_open.mouseEnabled = false
eyes_open.mouseChildren = false
于 2013-09-24T11:14:52.387 回答
0

你忘了把眼睛藏起来。

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

于 2013-09-25T19:52:25.460 回答
0

一种简单的解决方案(没有双关语)是使用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 帧重新开始。

于 2013-09-24T12:29:23.637 回答
0

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

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;
    }

}
于 2013-09-24T15:33:35.077 回答