ActionScript 3 EventListener 和带参数的函数

Posted

技术标签:

【中文标题】ActionScript 3 EventListener 和带参数的函数【英文标题】:ActionScript 3 EventListener and Function with parameter 【发布时间】:2017-10-01 20:03:40 【问题描述】:

所以我正在 Adob​​e Animate 中开发一个项目,它是一个交互式地图。

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

例如,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】:

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

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

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

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

【讨论】:

以上是关于ActionScript 3 EventListener 和带参数的函数的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 ActionScript 3 SliceBitmap类

ActionScript 3 ActionScript 3中的XML循环

ActionScript 3 clickTag使用ActionScript 3

ActionScript 3 ActionScript 3中的反射

ActionScript 3 在ActionScript 3中嵌入字体

ActionScript 3 TextManager ActionScript 3.0类