所以我正在开发一个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非常不熟悉,所以感谢任何帮助和提示!
答案 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
});
}