ActionScript 3 EventListener 和带有参数的函数
ActionScript 3 EventListener and Function with parameter
所以我正在使用 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:事件处理程序采用唯一参数:事件对象。
错误 #2:您要为事件订阅一个方法,showShred(1) 立即调用该方法并且 returns 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
});
}
所以我正在使用 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:事件处理程序采用唯一参数:事件对象。
错误 #2:您要为事件订阅一个方法,showShred(1) 立即调用该方法并且 returns 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
});
}