ActionScript 3 EventListener 和带参数的函数
Posted
技术标签:
【中文标题】ActionScript 3 EventListener 和带参数的函数【英文标题】:ActionScript 3 EventListener and Function with parameter 【发布时间】:2017-10-01 20:03:40 【问题描述】:所以我正在 Adobe 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中的反射