【问题标题】:Gesture Events and StageWebView手势事件和 StageWebView
【发布时间】:2011-09-05 17:40:49
【问题描述】:

您好!我有一个 Flex 4.5 Mobile 项目正在滚动,我遇到了一个非常疯狂的障碍。我正在使用 StageWebView 对象来呈现网页,嵌入在我的 Spark 布局的其余部分中。我正在尝试向包含 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/

谢谢!

【问题讨论】:

  • 旁注:我试图在我的主 MXML 页面上设置一个全局事件,并将 useCapture 设置为 true。 StageWebView 上发生的事件仍未被捕获。
  • 我决定用 adobe 在这个上打开一个 bug:bugs.adobe.com/jira/browse/SDK-30564

标签: apache-flex mobile air flex-spark


【解决方案1】:

我猜你可能必须自己连接手势事件,只需快速挖掘UIComponent.as,它有这些:

[Event(name="touchInteractionStarting", type="mx.events.TouchInteractionEvent")]
[Event(name="touchInteractionStart", type="mx.events.TouchInteractionEvent")]
[Event(name="touchInteractionEnd", type="mx.events.TouchInteractionEvent")]

【讨论】:

  • 其实才意识到InteractiveObject中也有基于手势的事件...
  • 我用来渲染 StageWebView 的保持控件是 UIComponent 的一个实例——即使它定义了这些事件,该事件也永远不会引发。它需要处理来自 StageWebView 组件的类似事件,并将其传递给 UIComponent 实现。
  • 嗯,我明白了,所以StageWebView 可能正在吸收所有的交互作用:( 我唯一的另一个想法是更混乱,有一个透明的UIComponent(我猜可能实际上是一个Sprite ) 在 StageWebView 之上,它会冒出简单的交互但会捕捉手势。
  • 在那里尝试过 :-) 来自 Adob​​e 文档 - “StageWebView 内容绘制在任何显示列表内容的顶部。无法控制多个 StageWebView 对象的绘制顺序。”不过感谢您的想法!
  • 好吧,我想这很重要/很烦人,足以作为一个错误提交? bugs.adobe.com
【解决方案2】:

这不是错误,据我了解,在 stagewebview 上的任何鼠标交互都意味着与当前自身加载的 html 的交互。您应该在那里捕获事件并将其触发回 swf。

肯定有一些 jquery 插件或有手势来帮助实现这一点的东西。 不过,您不能在它们上面覆盖东西,这有点令人遗憾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多