Actionscript 3鼠标悬停问题

时间:2013-09-24 11:06:48

标签: actionscript-3 flash 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 个答案:

答案 0 :(得分:1)

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

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

将2个事件监听器添加到底部精灵(eyes_closed) - 鼠标悬停 - > show eyes_open,mouse_out - >隐藏eyes_open

现在这很重要 - 在你的eyes_open sprite(2中最重要的一个)上添加

eyes_open.mouseEnabled = false
eyes_open.mouseChildren = false

答案 1 :(得分: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帧重新开始。

答案 2 :(得分: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;
    }

}

答案 3 :(得分: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

更改图层顺序