xcode - Cocos2d-x OS X 应用程序菜单

标签 xcode macos cocoa menu cocos2d-x

我有一个 cocos2d-x 应用程序,主要在 iOS 上进行调试。现在我正在从事 OS X 方面的工作。

正如预期的那样,一切工作原理几乎相同,只是我的 iOS 应用程序中有一些手势命令无法转换为 OS X。

我想创建菜单项(OS X 级别)和关联的快捷方式来完成一些手势交互(至少作为一个选项)。

创建 MainMenu.xib 并将其链接到项目设置中似乎并不是全部。菜单仍然是通用的“AppName”和窗口菜单,而不是我在 xib 文件中创建的菜单。

我相信我需要以某种方式将它连接到 AppDelegate,但我不确定如何,而且我还没有成功找到这方面的文档,至少与它如何与 Cocos2d-x 相互作用有关.

最佳答案

本质上,您只需要在从 AppDelegate.cpp 或其他地方调用的 Objective-C++ 类中创建菜单即可。扩展名为 .mm 以调用 Objective-C 编译器/运行时。然后,您可以创建 NSMenu 并添加项目或替换整个菜单集[ServiceMenu/WindowMenu/MainMenu]

NSMenu 引用:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSMenu_Class/index.html )

我发现唯一有趣的部分是从菜单中接收一个操作,我相信您还需要创建一个 Objective-C 类作为接收器(目标)。

您应该能够将 .xib 文件作为一个全新的菜单加载,以替换 GLFW3 创建的菜单,但我还没有研究过这一点。

更新:这是一个示例项目。

https://github.com/stevetranby/TestNSMenuCocos2Dx

更新:向项目添加了使用 .xib 加载菜单的示例

关于xcode - Cocos2d-x OS X 应用程序菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27909511/

相关文章:

objective-c - 使用 Cocoa/OSX 合并/堆叠两个图像

xcode - performSegueWithIdentifier 抛出未知异常

swift - UITest 失败并出现错误 'ld: entry point (_main) undefined. for architecture x86_64'

iphone - NSJSONSerialization Json 嵌套子

c - LLDB:每次调用时打印传递给函数的变量?

macos - brew install postgresql(升级)错误,无法链接 - 死链接到不存在的旧版本

objective-c - 十六进制到人类可读的 NSString

swift - NSTableView 获取正在使用键盘编辑的单元格

javascript - 无法在 MacOS 上打开 Intellij

objective-c - OSX 中的数据加密和解密