【问题标题】:Why wont e.target work?为什么不会 e.target 工作?
【发布时间】:2013-05-28 20:36:57
【问题描述】:
play_btn.addEventListener(MouseEvent.MOUSE_OVER, hoverButton);
play_btn.addEventListener(MouseEvent.MOUSE_OUT, hoverOffButton);

stop_btn.addEventListener(MouseEvent.MOUSE_OVER, hoverButton);
stop_btn.addEventListener(MouseEvent.MOUSE_OUT, hoverOffButton);

fast_btn.addEventListener(MouseEvent.MOUSE_OVER, hoverButton);
fast_btn.addEventListener(MouseEvent.MOUSE_OUT, hoverOffButton);

function hoverButton(e:MouseEvent):void
{
    e.target.nextFrame();
}
function hoverOffButton(e:MouseEvent):void
{
    e.target.prevFrame();
}

您好,我想了解为什么这段 actionscript 代码不会让我的播放、停止和快进按钮切换到下一帧和上一帧。基本上,当鼠标悬停时,按钮会稍微向上跳跃,然后在鼠标未悬停时返回。但是,如果我用 play_btn 或 fast_btn 等替换“e.target”,这确实有效。据我所知,帧在正确的位置。

【问题讨论】:

  • 你能追踪 e.target 和 e.currentTarget 中的对象是什么(我认为追踪会给出对象 id...所以也追踪 play_btn、stop_btn 和 fast_btn)?
  • 我追踪了 e.target,我的输出是 [object MovieClip]。有时,当鼠标悬停在一个按钮上时,它会同时出现多次。那么这究竟意味着什么,e.targeting 正在“定位”整个剪辑?

标签: actionscript-3 events mouse


【解决方案1】:

event.targetevent.currentTarget 之间存在差异。

event.target 是调度事件的对象。在您的情况下,您的按钮的形状或子对象。 event.currentTarget 是您附加侦听器的对象。

这意味着,如果您对调度鼠标事件的对象感兴趣,您可以使用 e.target。在您的情况下, e.currentTarget 将导致您计划它的方式。

【讨论】:

  • 另一种处理方法是关闭按钮中的 mouseChildren(这可以在基类中有效地完成)。
  • 感谢 Larusso 为我提供解决方案。但是我仍然不明白为什么 e.target 不起作用。我之前发布了用于跟踪 e.target 的输出是 [Object MovieClip]。这是什么意思,每个按钮都同时调度事件?
  • 您有一个按钮影片剪辑。这个按钮里面有一个嵌套的影片剪辑(例如一个图标)。如果单击该图标,则调度程序是图标影片剪辑。事件在显示列表中冒泡,直到它到达舞台或有人在事件处理程序中阻止了事件(event.stopPropagation())您可以将 mouseChildren 设置为 false,但有时您需要将侦听器添加到您不这样做的类中不知道。请改用 currentTarget。我大部分时间都使用 currentTarget 。我在菜单的情况下使用目标。在那里我将侦听器添加到菜单并检查单击了哪个按钮
猜你喜欢
  • 1970-01-01
  • 2016-04-08
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
相关资源
最近更新 更多