2010-11-05 40 views
1

我的建筑,它的一些可拖动按钮的Flash应用程序拖放对象,我希望他们这样的表现:如何检测一个点击一拖在AS3

  • 你点击它,点击事件1发生,
  • 你点击并按住按钮,你可以移动它 。如果从 保持释放,它不触发 ClickEvent

我遇到不知道用户是否只需点击或开始拖动事件的逻辑问题。有没有人知道任何逻辑来解决这个问题?我曾考虑过其他替代方法,例如放置只能拖动或只能点击的按钮区域,但我在其他Flash应用程序中看到过这种类型的功能,我想知道它是如何实现的。

回答

2

另一种方法可能是mousedown和mouseup之间的间隔 - 拖动需要比点击更长的时间。

+0

比检查鼠标是否移动更好的答案。点击速度很快,拖动时间较长,有些用户可能无法点击而无法移动,特别是平板电脑或触摸屏用户,或具有非常快的鼠标的用户。 – AttackingHobo 2010-11-05 19:35:25

1

有时,最明显的见解只有找到自己的方式进入我的大脑淋浴...

我意识到要完成这仅仅是通过保持鼠标的轨道时MOUSE_DOWN首次注册坐标最简单的方法。然后,当MOUSE_UP事件发生时,您只需检查鼠标坐标是否相同或鼠标位置是否已更改。如果鼠标没有移动,那么用户点击对象,如果鼠标移动了,那么你知道用户拖动了对象,所以他们没有点击。

+0

我想你需要一定的宽容度,因为即使用户点击鼠标,鼠标可能会略微移动。我使用平板电脑,点击时很难不移动光标。 – hamishtaplin 2010-11-05 11:25:56

+0

同意。 +/-几个像素。我认为你的时间间隔解决方案是一个更好的解决方案:) – justinl 2010-11-06 00:31:04