我正在为 AIR 构建一个应用程序,用 AS3 编写,有时(大部分时间),当我将鼠标移到右键菜单上时(我已经尝试过 ContextMenu 和 NativeMenu - 由于需要,我目前正在使用 NativeMenu子菜单),视频对象显着减慢(它显示本地网络摄像头的图像),并且 FPS 计数器也下降(显然)。这在调试和安装后运行应用程序时都会发生。这是一个真正的交易破坏者,我真的很感激一些帮助。我还没有在互联网上找到类似的东西,这真的很奇怪。
1 回答
0
这是因为 ContextMenu 需要通过 Windows GDI(软件级别)绘制,并且您的 Flash 视频对象正在通过 GPU 呈现(当然它可以由 Adobe 修复,但到目前为止他们还没有)。
唯一的解决方案是在 ContextMenu 出现之前暂停视频(或将其从舞台中删除),方法是在所有现有 ContextMenu 对象上捕获 ContextMenuEvent.MENU_SELECT(如果没有,为每个继承直接添加到的 InteractiveObject 的对象添加一个stage
)。
如果要恢复视频播放,则必须接受一些限制。由于 ContextMenu 关闭时没有事件,因此您需要依赖
- ContextMenuEvent.MENU_SELECT_ITEM(由您创建并添加到 ContextMenu.customItems 数组的 ContextMenuItem 触发)
- FullScreenEvent(进出 FullScreen 保证 ContextMenu 已关闭)
- Event.DEACTIVATE(如果 Flash 失去输入焦点,它将关闭任何上下文菜单)
- MouseEvent.CLICK - 在某些情况下这不是一个好主意(您可以为您的应用程序弄清楚)(您可以将它与所有内容顶部的半透明深色 Sprite 结合起来,以指示需要单击鼠标以“取消”动作,并捕捉和停止点击的传播);
在某些情况下,您将无法检测到 ContextMenu 的关闭,例如
- 当用户选择内置菜单项时(不是 Adobe Air 的情况)
- 按 F10 或 Escape 等键
- 其他情况
于 2012-05-02T17:02:46.883 回答