我有一个应用程序,它有一个断球动作,但有一些障碍,但是当释放鼠标按钮而不是单击时,游戏会重新开始。
我创建了该应用程序,以使游戏从单击鼠标开始。如果球击中了底部窗格而不是击中了桨,则游戏将重置并且玩家丧命。球拍还可以通过鼠标来控制,因此从理论上讲,当球未命中并且游戏重置时,鼠标仍会被按下而不再使用球拍。不幸的是,我似乎无法解决从控制操纵杆释放鼠标键重新启动游戏的问题。我尝试使用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的桨叶
我还尝试使它们的所有事件都与窗格无关,而没有将它们作为桨事件,以防来回拖动桨导致光标在拖动和释放时不再位于桨上。
任何建议都将不胜感激,因为这是我应用程序的烦人错误。 谢谢。
答案 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