События жестов и StageWebView

Привет! У меня есть проект Flex 4.5 Mobile, и я наткнулся на довольно сумасшедшую загвоздку. Я использую объект StageWebView для рендеринга веб-страниц, встроенных в остальные мои искровые макеты. Я пытаюсь добавить событие жеста в компонент, содержащий StageWebView, но поскольку объект StageWebView не принадлежит стеку Flex (он наследуется от EventDispatcher, а не от UIComponent), кажется, что все мои события съедаются. Любое событие, связанное с мышью (щелчок, жест и т. д.), кажется, не регистрируется, и я не уверен, как его обойти. События жестов работают, если я использую область, где браузер не отображается. Как я могу получить событие жеста из внешнего SkinnableContainer?

Ссылка на StageWebView:

http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/media/StageWebView.html

UIComponent, обернутый StageWebView:

http://soenkerohde.com/2010/11/air-mobile-stagewebview-uicomponent/

Спасибо!


person Justin Beckwith    schedule 31.05.2011    source источник
comment
Примечание: я попытался установить глобальное событие на своей главной странице MXML, установив для параметра useCapture значение true. События, происходящие в StageWebView, по-прежнему не фиксируются.   -  person Justin Beckwith    schedule 31.05.2011
comment
Я решил открыть ошибку с Adobe на этом: bugs.adobe.com/jira/ обзор/SDK-30564   -  person Justin Beckwith    schedule 03.06.2011


Ответы (2)


Я думаю, вам, возможно, придется подключить события жестов самостоятельно, просто быстро покопавшись в UIComponent.as, у него есть следующее:

[Event(name="touchInteractionStarting", type="mx.events.TouchInteractionEvent")]
[Event(name="touchInteractionStart", type="mx.events.TouchInteractionEvent")]
[Event(name="touchInteractionEnd", type="mx.events.TouchInteractionEvent")]
person dain    schedule 31.05.2011
comment
На самом деле только что понял, что в InteractiveObject тоже есть события, основанные на жестах... - person dain; 31.05.2011
comment
Удерживающий элемент управления, который я использую для рендеринга StageWebView, является экземпляром UIComponent — хотя он определяет эти события, событие никогда не возникает. Это потребует обработки аналогичного события из компонента StageWebView и передачи его через реализацию UIComponent. - person Justin Beckwith; 01.06.2011
comment
Хм, я вижу, так что, вероятно, StageWebView поглощает все взаимодействия :( единственная другая идея, которая у меня есть, более грязная, иметь прозрачный UIComponent (ну, я думаю, на самом деле, вероятно, Sprite) поверх StageWebView, который выводит простые взаимодействия, но фиксирует жесты. - person dain; 01.06.2011
comment
Я пробовал это :-) Из документов Adobe - содержимое StageWebView рисуется поверх любого содержимого списка отображения. Невозможно управлять порядком прорисовки нескольких объектов StageWebView. Однако спасибо за идеи! - person Justin Beckwith; 01.06.2011
comment
Хорошо, тогда я думаю, что это достаточно важно/раздражает, чтобы зарегистрировать ошибку? bugs.adobe.com - person dain; 01.06.2011

это не ошибка, насколько я понимаю, любое взаимодействие с мышью над stagewebview означает взаимодействие с загруженным в данный момент html. вы должны фиксировать события там и запускать их обратно в swf.

конечно, есть какие-то плагины jquery или что-то, у чего есть жесты, чтобы помочь в этом. это немного облом, что вы не можете накладывать на них что-то.

person joe    schedule 17.02.2012