0

我正在为 AIR 构建一个应用程序,用 AS3 编写,有时(大部分时间),当我将鼠标移到右键菜单上时(我已经尝试过 ContextMenu 和 NativeMenu - 由于需要,我目前正在使用 NativeMenu子菜单),视频对象显着减慢(它显示本地网络摄像头的图像),并且 FPS 计数器也下降(显然)。这在调试和安装后运行应用程序时都会发生。这是一个真正的交易破坏者,我真的很感激一些帮助。我还没有在互联网上找到类似的东西,这真的很奇怪。

4

1 回答 1

0

这是因为 ContextMenu 需要通过 Windows GDI(软件级别)绘制,并且您的 Flash 视频对象正在通过 GPU 呈现(当然它可以由 Adob​​e 修复,但到目前为止他们还没有)。

唯一的解决方案是在 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 的关闭,例如

  • 当用户选择内置菜单项时(不是 Adob​​e Air 的情况)
  • 按 F10 或 Escape 等键
  • 其他情况
于 2012-05-02T17:02:46.883 回答