ActionScript 3 EventListener和带参数的函数

时间:2017-05-03 20:25:18

标签: javascript jquery actionscript-3 flash actionscript

所以我正在开发一个Adobe Animate项目,这是一个交互式地图。

当我将鼠标悬停在关键区域时,我正在尝试做的是弹出窗口淡入淡出。例如,一个弹出窗口,说明可以在回收区域进行回收的内容。由于有多个回收位置,我创建了两个函数,一个用于隐藏弹出窗口,另一个用于显示它,并且正在使用开关盒来确定哪个回收位置发生了鼠标悬停事件。

因此,例如,show事件的设置如下:

function showShred(event: MouseEvent, shredNum: int): void {
switch (shredNum) {
    case 1:
        TransitionManager.start(shreddingInfo_flr3_1, {
            type: Fade,
            direction: Transition.IN,
            duration: 3,
            easing: Strong.easeOut
        });
        break;
    case 2:
        TransitionManager.start(shreddingInfo_flr3_2, {
            type: Fade,
            direction: Transition.IN,
            duration: 3,
            easing: Strong.easeOut
        });
        break;
    case 3:
        TransitionManager.start(shreddingInfo_flr3_3, {
            type: Fade,
            direction: Transition.IN,
            duration: 3,
            easing: Strong.easeOut
        });
        break;
}
}

所以我添加了事件监听器,它们只是导致错误而且似乎不喜欢该函数接受参数。

shredBtn_Flr3_1.addEventListener(MouseEvent.MOUSE_OVER, showShred(1));

我对ActionScript 3.0非常不熟悉,所以感谢任何帮助和提示!

1 个答案:

答案 0 :(得分:3)

错误#1:事件处理程序采用唯一的参数:事件对象。

错误#2:您要为事件订阅方法, showShred(1)立即调用该方法并返回 null ,这不是有效的事件处理程序

事件对象包含对事件源的引用。在您的情况下,您可以通过以下方式执行此操作:

shredBtn_Flr3_1.addEventListener(MouseEvent.MOUSE_OVER, showShred);
shredBtn_Flr3_2.addEventListener(MouseEvent.MOUSE_OVER, showShred);
shredBtn_Flr3_3.addEventListener(MouseEvent.MOUSE_OVER, showShred);

function showShred(e:MouseEvent): void
{
    switch (e.currentTarget)
    {
        case shredBtn_Flr3_1:
            fadeIn(shreddingInfo_flr3_1);
            break;

        case shredBtn_Flr3_2:
            fadeIn(shreddingInfo_flr3_2);
            break;

        case shredBtn_Flr3_3:
            fadeIn(shreddingInfo_flr3_3);
            break;
    }
}

function fadeIn(target:DisplayObject):void
{
    TransitionManager.start(target, {
        type: Fade,
        direction: Transition.IN,
        duration: 3,
        easing: Strong.easeOut
    });
}