鼠标悬停在ContextMenu / NativeMenu上时AIR应用程序变慢

时间:2011-10-09 10:51:01

标签: flash actionscript-3 webcam frame-rate slowdown

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

1 个答案:

答案 0 :(得分:0)

这是因为ContextMenu需要通过Windows GDI(软件级别)绘制 你的Flash视频对象正在通过GPU呈现(当然它可以由Adobe修复,但截至目前它们还没有)。

唯一的解决方案是在ContextMenu出现之前暂停视频(或从舞台中删除),方法是在所有现有的ContextMenu对象上捕获ContextMenuEvent.MENU_SELECT(如果没有,则为每个继承直接添加的InteractiveObject的对象添加一个) stage)。

如果您想恢复视频播放,则必须接受一些限制。 由于ContextMenu关闭时没有事件,您需要依赖

  • ContextMenuEvent.MENU_SELECT_ITEM(由ContextMenuItem触发,您创建并添加到ContextMenu.customItems数组)
  • FullScreenEvent(外出和进入FullScreen可确保ContextMenu已关闭)
  • Event.DEACTIVATE(如果丢失输入焦点,Flash将关闭所有上下文菜单)
  • MouseEvent.CLICK - 在某些情况下这不是一个好主意(你可以为你的应用找到它)(你可以将它与半透明黑暗的Sprite结合在一起,以表明鼠标点击的必要性“取消”动作,并捕捉和停止点击的传播;;

在某些情况下,您将无法检测到ContextMenu的关闭,例如

  • 当用户选择内置菜单项时(不是Adobe Air的情况)
  • 按下F10或Escape
  • 等键
  • 其他情况