Cocoa-如何在鼠标未按下时获取鼠标按下事件';不要拖拉?

Cocoa-如何在鼠标未按下时获取鼠标按下事件';不要拖拉?,cocoa,event-handling,mouse,Cocoa,Event Handling,Mouse,Cocoa,MacOSX10.6 我的应用程序(游戏)需要反复确定鼠标是否在视图中向下,即使鼠标位置没有改变 问题是: mouseDown仅在第一次按住鼠标时调用。如果此时未移动鼠标,则不会调用mouseDragged,并且不再生成mouseDown事件 问题:如何确定鼠标在初始(且仅)mouseDown事件后仍处于按下状态 谢谢。如果你需要在鼠标按下时定期做一些事情,让mouseDown:创建一个重复,让mouseUp:将其拆下。如果你只想知道鼠标是否按下,请在mouseDown:和mou

Cocoa,MacOSX10.6

我的应用程序(游戏)需要反复确定鼠标是否在视图中向下,即使鼠标位置没有改变

问题是:

  • mouseDown
    仅在第一次按住鼠标时调用。如果此时未移动鼠标,则不会调用
    mouseDragged
    ,并且不再生成
    mouseDown
    事件
问题:如何确定鼠标在初始(且仅)
mouseDown
事件后仍处于按下状态


谢谢。

如果你需要在鼠标按下时定期做一些事情,让
mouseDown:
创建一个重复,让
mouseUp:
将其拆下。

如果你只想知道鼠标是否按下,请在
mouseDown:
mouseUp:
中设置一个
BOOL
变量

如果你想在鼠标按下时继续做一些事情,你可以进入一个鼠标跟踪循环,如下所述:基本上,你可以循环直到找到鼠标上升事件,你可以在循环中做任何你想做的事情。您必须使用
nexteventmachingmask:untilDate:inMode:dequeue:
而不是
nexteventmachingmask:
,并将
untilDate
设置为较短的值。

是您在64位上所追求的。(4年后确定)

//莫兹拉

     1.30  #ifdef XP_MACOSX
     1.31 -  // hacky OS call to ensure that we don't show a context menu when the user
     1.32 -  // let go of the mouse already, after a long, cpu-hogging operation prevented
     1.33 +  // Hack to ensure that we don't show a context menu when the user
     1.34 +  // let go of the mouse after a long cpu-hogging operation prevented
     1.35    // us from handling any OS events. See bug 117589.
     1.36 -  if (!::StillDown())
     1.37 +  if (!CGEventSourceButtonState(kCGEventSourceStateCombinedSessionState, kCGMouseButtonLeft))
    1.38      return;
    1.39  #endif

谢谢你,汤姆。因为这是一个游戏,我需要异步解释这些游戏。也就是说,随着时间的推移,我需要获得事件,然后将它们传递给游戏逻辑。(因此,我无法保持紧密联系。)谢谢彼得。它似乎有点笨拙——本应该更喜欢系统级的方法——但会尝试这种方法。对我来说,这似乎是可可团队的一个奇怪的疏忽,因为这有点把人们推向了一种不太好的投票方式。先生,计时员不是投票人。