- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在将一个应用程序(或更准确地说,一个 VST 插件)从 Windows 移植到 OSX。我对 OSX 编程有点陌生,但我使用的是通过 HICocoaCreateView 添加到 Carbon 窗口(我从主机获得)的 Cocoa NSView。
Anywhoo...在这个 View 中,我想获取 mouseMoved 和 mouseDragged 事件,但是当拖动时,即使鼠标离开我的 NSView (以及父窗口),我也想获取这些事件,但我就是不能似乎让这一切发生。
在 Windows 上,我会在 mouseDown 上执行 SetCapture 来暂时获取所有鼠标事件。我在 Cocoa 中发现的最接近的东西是“addGlobalMonitorForEventsMatchingMask”,但这只是 10.6+,我很难相信这是之前不可能做到的事情。 (毕竟,这通常用于可拖动组件,如滚动条等。)
这让我发疯!
更新:
还有一个叫做 CGEventTapCreate 的东西,据我从稀缺的文档中可以看出,它类似于 addGlobalMonitor...但在 Carbon 中。我还没有完全了解 Carbon 和 Cocoa 之间的关系以及它们在哪里起作用。即使我的主要 Material 是 cocoa ,它也可以使用吗? (我从主机得到的窗口既可以是Cocoa,也可以是Carbon。真是一团糟。)
最佳答案
CGEventTap
东西并不是真正的 Carbon。它是在 Quartz 中,它可以被视为 Cocoa 的子框架(无论如何,Cocoa 实际上只是其他框架的集合)。 Carbon 是一个遗留(且已弃用)的框架,它的创建是为了简化 Mac OS 9(应用程序编程主要使用 C 语言完成)和 Mac OS X(使用 Objective-C)之间的过渡。并非 Apple 提供的所有 C 函数都是 Carbon; Quartz 和 Grand Central Dispatch 作为使用 C 的现代框架立即浮现在脑海中(我相信是因为速度略有优势)。
在了解了背景之后,这些函数可以在 Cocoa 代码中正常工作。据我所知, addGlobalEventMonitor...
和 addLocalEventMonitor...
只是 CGEventTap
的 Obj-C 包装器。 p>
我认为 CGEventTap
是正确的选择。是的,他们的文档很少,但很简单。戴夫·德隆 (Dave DeLong) 对 this SO question 的回答可能会让你走上正确的道路。
关于xcode - 在我的 NSView 窗口之外获取 mouseMoved/mouseDragged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330512/
@Override public Shape getShape() { final Rectangle2D.Double result = new Rectangle2D.Do
我们目前正在修复一个项目,该项目必须在下周完成,所以我们的时间已经不多了(别担心,我想说的是我们没有时间浪费时间)我们所有的代码并重新开始......)。 我们有一个 JPanel (="page")
我创建了一个 Java 应用程序来添加/删除并在 JPanel 上显示随机数量的点。每次拖放都可以移动点。为了撤消最后的操作,我缓冲了这些点。 我的问题:如果通过“mouseDragged”移动一个点
我如何知道从 mouseDragged 事件中按下的按钮? 我在 mouseDragged() 中遇到问题,因为接收到的 MouseEvent 为 getButton() 返回 0。我对鼠标位置没有问
拖动鼠标后释放鼠标时是否应该调用 mouseReleased() 事件? 我需要调用 mouseReleased() 来重置 mouseDragged() 中使用的一些变量,但它似乎从未被调用。 最佳
我正在构建一个文本编辑器,并尝试添加使用行号边距选择行的功能。我当前的方法是使用 mouseDragged 来更新所选行。当进行缓慢的鼠标移动时,这工作得很好,但是当进行更快的移动时,选择无法跟上并且
所以我使用 knob.js 创建两个表盘,一个在另一个里面。外表盘代表一本书的累积评分,即所有评分的平均值。这个外层表盘有 data-readOnly="true" 并且它的值在这些表盘的公共(pub
我正在尝试制作一个 SpriteKit 游戏,玩家可以在其中拖动 Sprite 组,但我不知道如何让 Sprite 跟随鼠标光标。使用 SpriteKit 样板,我得到了这个: 以下是我如何移动“He
我有 2 个 NSView 子类,它们是公共(public) super View 的 subview 。它们不重叠,并且都拦截鼠标拖动的调用。当我从一个子类拖动到另一个子类时,即使我在整个屏幕上拖动
我会直接提出问题。如何为我的应用程序实现一个系统,让我在按住鼠标左键的同时为下面显示的这些矩形着色?当释放时,它会停止着色。我在互联网上搜索,但我仍然无法理解这些 MouseEvents 是如何工作的
我有一个程序,可以通过单击和拖动在屏幕上移动图像。唯一的问题是,当我单击图像并开始在面板上拖动它时,图像首先跳转到鼠标光标的位置。如何防止这种情况发生,以便无论我单击图像的何处,图像都会简单地移动?我
谁能告诉我如何将位置 X 和 Y 返回到我的 WindowController NSTextField(testTextX 和 testTextY)? 我以编程方式创建了一个 windowContro
如何通过 mouseDragged 在 JPanel 上进行铅笔绘图? 我有一个 JPanel,我想在其中使用鼠标进行绘制,因此每当我在该 JPanel 上拖动鼠标时,都会为每个 (x,y) 绘制一个
完成创建自定义滚动条,问题是: addMouseMotionListener(new MouseMotionAdapter() { @Override public void mous
我已经编写了如下定义的 MouseListener,这样我就可以移动 JButton 来重新排序 JPanel 中的组件。 JPanel 位于 JScrollPane 中,因此当添加多个组件时,它们可
我正在尝试弄清楚如何在我的事件中访问使用 paintComponent 绘制的不同图像(在作业中不允许使用 JLabels)。 拖动时,我只想通过鼠标拖动移动一个图像,而且我似乎无法使用 e.getS
我目前正在将一个应用程序(或更准确地说,一个 VST 插件)从 Windows 移植到 OSX。我对 OSX 编程有点陌生,但我使用的是通过 HICocoaCreateView 添加到 Carbon
当我拖动鼠标时,绘制或设置 JPanel 大小时出现问题,我设置的单击位置和大小取决于拖动位置(X 和 Y)绘制可调整大小的矩形(JPanel)。 private void panelMouseDra
我正在尝试为 JTable 编写自定义的拖放行为,但无法接收 MOUSE_DRAGGED 事件。我想问题是 native DnD 操作消耗了事件(如 mouseDragged 的 javadoc 中所
我正在创建一个程序,您可以在其中在面板上绘制(线条、椭圆形或矩形)并指定颜色、宽度、填充等。我有一个实现 MouseMotionListener 和 MouseListener 的 JPanel 类。
我是一名优秀的程序员,十分优秀!