`

[新闻资讯] [Flash/Flex] 走自己的路:重写AIR移动应用程序中的BACK按键

    博客分类:
  • FLEX
阅读更多
http://bbs.9ria.com/viewthread.php?tid=85681&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000


我正在我的RunPee移动应用程序开发中使用AIR和Flex4.5. Hero。我非常喜欢Hero。它有它的优缺点,但总体上看,它是值得在上面进行快速开发的。这种观点一致持续到我开始在我的两个视图间添加自定义过渡。
这里有一个应用程序的导航布局- 到目前为止。




Hero默认的视图间的过渡是:通过navigator.pushView( NextView ),当进行视图过渡时,下一个视图从右侧滑入; 然后,当你设置了navigator.popView()或者用户点击了back-key,过渡将是新屏幕从左侧滑入。这样对向前和向后的过渡很有用。如果这是你所需要的全部那么你就可以这样设置。

但是从我的导航布局图中您可以看到,我希望有些屏幕是从上面或者下面滑入。这可以很容易的通过自定义过渡来实现。当用户点击后退键时问题来了,因为默认的过渡是左右滑动。
这似乎没有破坏应用程序和其他什么。但是我不想让一个屏幕从上面滑入,而当返回时屏幕却是从左面滑入。对我来说这是一个很不好的用户体验,我无法忍受它。
如果Hero能过捕捉一个视图的过渡并在返回时采用相反的过渡,那么这是很好的。不过,它不能这样做,所以,我们必须自己来处理它。幸运的是它是很容易做的。
在你的View 标签里对backKeyPressed设置一个监听器,如下:
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark" title="Timer"
        backKeyPressed="onBackKeyPressed( event )">
它的处理将是这样的:
private function onBackKeyPressed( e:FlexEvent ):void {
        e.preventDefault();

        var transition = new SlideViewTransition();
        transition.direction = ViewTransitionDirection.UP;
        transition.mode = SlideViewTransitionMode.PUSH;
        navigator.popView( transition );
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics