当鼠标移到上下文菜单/本机菜单时,AIR应用程序变慢



我正在为AIR构建一个应用程序,用AS3编写,有时(大多数时候),当我将鼠标移动到右键菜单上时(我已经尝试了ContextMenu和NativeMenu -我目前使用NativeMenu,因为需要子菜单),视频对象显着减慢(它显示本地网络摄像头的图像),FPS计数也下降(显然)。在调试和安装后运行应用程序时都会发生这种情况。这件事真的很棘手,我真的很感激你的帮助。我还没有在网上找到类似的东西,真的很奇怪。

这是因为ContextMenu需要通过Windows GDI(软件级)绘制你的Flash视频对象是通过GPU渲染的(当然它可以被Adobe修复,但到目前为止他们还没有)。

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

如果您想恢复视频播放,您将不得不接受一些限制。因为没有事件关闭一个ContextMenu,你需要依赖于

  • ContextMenuEvent。MENU_SELECT_ITEM(由您创建并添加到ContextMenu的ContextMenuItem触发)。customItems数组)
  • FullScreenEvent(退出和进入全屏保证上下文菜单被关闭)
  • 事件。停用(Flash将关闭任何上下文菜单,如果它失去输入焦点)
  • MouseEvent。点击——在某些情况下这并不是一个好主意(你可以为你的应用找出答案)(你可以将其与半透明的黑色精灵结合在一起,以表明鼠标点击"取消"动作的必要性,并捕捉和阻止点击的传播);

在某些情况下,您将无法检测到上下文菜单的关闭,例如

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

相关内容

  • 没有找到相关文章

最新更新