Это связано с тем, что ContextMenu необходимо рисовать с помощью Windows GDI (уровень программного обеспечения), а ваш Flash-видео объект визуализируется через графический процессор (конечно, это может быть исправлено Adobe, но на данный момент это не так).
Единственное решение - приостановить видео (или удалить его со сцены) до появления ContextMenu, перехватывая ContextMenuEvent.MENU_SELECT для всех существующих объектов ContextMenu (если таковых нет, добавьте по одному для каждого объекта, который наследует InteractiveObjectдобавлен непосредственно к stage
).
Если вы хотите возобновить воспроизведение видео, вам придется принять некоторые ограничения.Поскольку при закрытии ContextMenu не происходит никаких событий, вам нужно полагаться на
- ContextMenuEvent.MENU_SELECT_ITEM (инициируется ContextMenuItem, который вы создаете и добавляете в массив ContextMenu.customItems)
- FullScreenEvent (выход в FullScreen гарантирует закрытие ContextMenu)
- Event.DEACTIVATE (Flash закроет все контекстные меню, если потеряет фокус ввода)
- MouseEvent.CLICK - это нехорошая идея в некоторых ситуациях (вы разберетесь с этим для своего приложения) (вы можете комбинировать это с полупрозрачным темным спрайтом поверх всего, чтобы указать на необходимость щелчка мышью для действия «отмена», а также для ловли и остановки распространениящелчка);
В некоторых ситуациях вы не сможете обнаружить закрытие ContextMenu, например
- , когда пользователь выбирает встроенныйпункт меню (не в случае с Adobe Air)
- нажимает такие клавиши, как F10 или Escape
- другие ситуации