OnMouseRelease的行为类似于OnMouseClick

时间:2019-05-03 02:37:48

标签: java mouseevent

我有一个应用程序,它有一个断球动作,但有一些障碍,但是当释放鼠标按钮而不是单击时,游戏会重新开始。

我创建了该应用程序,以使游戏从单击鼠标开始。如果球击中了底部窗格而不是击中了桨,则游戏将重置并且玩家丧命。球拍还可以通过鼠标来控制,因此从理论上讲,当球未命中并且游戏重置时,鼠标仍会被按下而不再使用球拍。不幸的是,我似乎无法解决从控制操纵杆释放鼠标键重新启动游戏的问题。我尝试使用onMouseDragReleased和onDragDetected以及其他组合添加强制释放,计数器。以下是一些部分代码,其中包括了我认为与问题相关的领域。我尝试过的一些不同方面都被注释掉了。

unload 
($$
select * from table where id='ABC'
$$)
to 's3://bucket/queries_results/20150324/table_dump/'
credentials 'aws_access_key_id=;aws_secret_access_key='
;

我单击并开始游戏。当我第二次单击鼠标来控制球拍时,保持点击计数器可以防止游戏重新启动。但是,计数器及其位置的任何变化都不能阻止鼠标释放后立即开始游戏。我正在使用Scene Builder,目前已尝试以下操作:

startGameWithMouseClicked作为窗格的onMouseClicked事件 selectPaddleWithMousePressed作为桨的onDragDetected或onMousePressed movePaddleWithMouseDragged作为onMouseDragReleased或onMouseDragged的拨片 stopPaddleWithMouseReleased为onMouseDragReleased或onMouseReleased的桨叶

我还尝试使它们的所有事件都与窗格无关,而没有将它们作为桨事件,以防来回拖动桨导致光标在拖动和释放时不再位于桨上。

任何建议都将不胜感激,因为这是我应用程序的烦人错误。 谢谢。

1 个答案:

答案 0 :(得分:0)

我发现鼠标事件总是被按下,释放,单击-因此,我原以为鼠标事件在从拖动动作中释放后会停止,所以单击事件仍然必须发生。我最终创建了一个变量,并使其在游戏开始时在click事件中(在if var == 0内)增加,在每次按下/释放时增加和减少,然后在click事件中最终减少以得到否则,它将返回0(仅当球不再移动时)(否则var!= 0时)。

这是我的逻辑:

click event
  if counter = 0
    start game
    counter + 1
  if counter != 0
    if ball moving, do nothing //for if you press/release multiple times while dragging paddle
    if ball not moving, counter - 1 //next click can start game
end click event

press event 
  counter + 1
end press event

drag event 
  move paddle
end drag event

release event 
  counter -1
end release event