`
momoko8443
  • 浏览: 36394 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flexstore源码解析1 ViewStack+ToggleButtonBar实现幕布特效

    博客分类:
  • flex
阅读更多

第一棵树(上):利用ViewStack+ToggleButtonBar实现flexstore中的幕布特效

clip_image001

目标:学会制作幕布切换场景的动画效果,仿制flexstore中3个主页面切换的特效。

1. 首先我们来分析在Flexstore.mxml的成分,eclipse中会列出这个文件的大纲outline。

clip_image003

同样我们可以打开Flexstore.mxml这个文件,看到里面有很多as代码,函数,有mx标签等。为了把注意力集中到我们想要了学习的幕布切换的功能上来,我们先剔除这个文件中可以无视的内容。

clip_image005我们可以新建一个flex工程demo1来完成我们想达到的效果,新建一个叫flexstore的application mxml(一下所出现的flexstore.mxml如没有所特别说明都是指的这个demo1中的flexstore.mxml) 在application按照上图的结构拖入控件。

2.然后仿照flexstore,新建3个自定义控件,来模拟HomeView、ProductsView、SupportView。

clip_image007

clip_image009

我们给这个HomeView打上红色的底色和简单文字,以示区别。ProductsView、SupportView分别以黄色和蓝色显示底色。

clip_image011好,3个自定义组件定义完了之后,我们在主程序也就是flexstore中建立它与其他3个页面之间的关联。

注意,在操作前,我们把demo1中application标签中的xmlns:ns1="*"改为xmlns="*",这样我们就可以直接以文件名的标签形式在flexstore.mxml调用同目录下所有自定义组件了。

clip_image013点击ViewStack控件,会出现view管理按钮,点击加号。在弹出的对话框中进行下图设置,不错这里就是要把做好的3个view控件往主界面flexstore中添加。同样的把另外2个view也依次添加进去

clip_image015

添加完后,我们看下flexstore.mxml的代码

<mx:ViewStack id="storeViews" width="100%" height="100%">

<HomeView label="Home" width="100%" height="100%">

</HomeView>

<ProductsView label="Products" width="100%" height="100%">

</ProductsView>

<SupportView label="Support" width="100%" height="100%">

</SupportView>

</mx:ViewStack>

<mx:ViewStack></mx:ViewStack>之间被添加了3个自定义view。

3.Run一下,我们的demo,会发现当前只能显示第一个view,HomeView。那么如何像flexstore这个案例一样点击按钮切换不同的view呢?

clip_image017

我们在flexstore这个案例中可以看到,3个view是通过点击菜单bar上的按钮来产山页面切换效果的。clip_image019

接下来我们就个demo中导航条加入按钮。

clip_image021我们再来重温下demo的控件结构,大家可以看到之前我还定义了一个ToggleButtonBar控件,看来这个控件就是用来定义按钮用的。我们在design界面点击这个控件,会发现,诶!和ViewStack一样它也有一排加减号按钮,我们点击下加号看看,对弹出的对话框进行如下设置。

clip_image023

这时我们会发现ToggleButtonBar上多了4个按钮,其中前3个是我们需要的,而后面一个是之前我们设置对话框时,flex builder给我自作主张加上的。clip_image025

那么我们就点击减号把最后一个按钮删除掉。

clip_image027

Ok,切换到source界面,看下flexstore.mxml的代码。我们可以看到,ToggleButtonBar设置了dataProvider属性,dataProvider什么意思呢?顾名思义数据提供者,id=storeViews的这个控件,也就是我们的ViewStack控件提供了ToggleButtonBar建立导航按钮时所需要的数据。

<mx:ApplicationControlBar width="100%" id="abc">

<mx:ToggleButtonBar dataProvider="storeViews">

</mx:ToggleButtonBar>

</mx:ApplicationControlBar>

好,再让我们Run一下这个application。恩,很好,点击3个按钮已经能切换页面了。

clip_image029

4.细心的你会发现,我的demo1中切换页面时是如此的生涩,没有过渡可言,直接蒙太奇式的方式显然不能满足你们的需要。Ok,那么接下来我们就来加上过渡特效。

点击flexstore.mxml中ViewStack控件,为每一个view设置effect。方法如下。选中某个view之后,点击Flex Propert的第二个小按钮clip_image031

clip_image033

下发会列出该控件所支持的所有事件特效等。在Effects下的hideEffect和showEffect设置WipeUp和WipeDown,表示的是当这个view要被show出来的时候是从下网上慢慢显示,在消失的时候是从上往下慢慢消失,我这里说倒了也有可能,这种东西我从来不记,设错了,就换一个。观众朋友们可能会说这个WipeDown和WipeUp是哪里冒出来的干活?我查了下api帮助,WipeDown是mx.effects包下的一个class,用来对Object也就是flex中拖出来或者自定义,或者new出来的控件对象进行动画特效一个类。 此外还有WideOut WideIn等各类特效,自己一个个替换看效果的学习最为直接,我这里就不啰嗦了。

clip_image035

大家可以看到为控件加入了effects后控件的代码中就会加入showEffect、hideEffect等事件。

<HomeView label="Home" width="100%" height="100%" showEffect="WipeDown" hideEffect="WipeUp">

</HomeView>

好了,为ViewStack下的3个view都添加完effects后,我们再来Run一下application。

哈哈,目的达到,除了界面难看点外,动画效果和正版的flexstore几乎一模一样。

以下给出了demo1工程源文件的下载,大家也一步一步做做看,利用ViewStack+toggleButtonBar来实现幕布特效吧。

至此,对于第一棵树的上半部分学习完毕。

  • demo1.rar (590.7 KB)
  • 描述: demo1工程源码
  • 下载次数: 842
分享到:
评论
1 楼 hawkingxwg 2010-04-23  
楼主,你的这篇分析很好,我很喜欢flexstore这个例子,但苦于项目看不懂,能否把它全部分析一下么, 谢谢!。还有您的新博客,貌似还没建好。进去了只有一张图片。

相关推荐

    Flexstore源码解析0 flexstore工程目录分析

    Flexstore是一款开源的存储管理工具,其源码分析主要集中在工程目录结构的理解和核心功能模块的解析上。本文将深入探讨Flexstore的源码组织方式,以及如何通过这些文件了解其内部工作原理。 首先,从标题"Flexstore...

    FlexStore里列表特效的实现

    这篇博文将深入探讨如何在FlexStore中实现列表特效,通过源码解析和实际操作,帮助开发者更好地理解和运用这一功能。 在FlexStore中,列表特效主要体现在数据加载、滚动、动画和交互等方面。首先,我们要了解...

    flexstore商店源码下载(FLEX商店)

    1. **电商平台架构**:FlexStore商店源码是构建在典型的电商架构基础上的,包括用户界面、后台管理系统、订单处理、库存管理、支付接口等多个组成部分。这些部分协同工作,为用户提供浏览商品、购物车操作、下单支付...

    flexstore flex入门示例

    1. **数据绑定**:在FlexStore中,你可以将数据存储绑定到UI组件,如列表或表格,实现数据和视图的自动同步。例如,在"bookstore"应用中,书籍列表可能就是通过绑定到一个FlexStore实例来动态更新的。 2. **数据...

    flexstore 的myeclipse项目

    在这个项目中,FlexStore 可能是实现了一个自定义的数据存储解决方案,可能包括数据库管理、数据查询以及数据安全等功能。 在分析 FlexStore 的源码时,我们可以深入理解以下几个关键知识点: 1. **MyEclipse IDE ...

    [原创]FLEX 自己模仿 flexstore 做的 网上商店 附源码

    标题中的“FLEX 自己模仿 flexstore 做的 网上商店 附源码”指的是使用Adobe Flex技术开发的一个网上商城应用,这个应用可能是作者参照了一个名为“flexstore”的示例或模板来创建的。Flex是基于ActionScript 3.0的...

    flexstore的代码

    研究FlexStore的源码可以帮助我们理解其内部实现机制,包括数据分片策略、数据压缩算法、数据分布和复制策略等。通过源码学习,开发者可以定制自己的存储需求,优化性能,或者为FlexStore贡献新的功能。 3. **数据...

    spring flexstore demo

    1. **Spring Flexstore简介** Spring Flexstore是Spring生态系统中的一个组件,它为开发者提供了对多种持久化存储的抽象,包括传统的关系型数据库、NoSQL数据库甚至云存储。这个框架允许开发者以一致的方式处理不同...

    Python库 | flexstore-0.0.1.tar.gz

    1. **分布式存储**:由于其后端支持,flexstore可能允许用户在多台机器或分布式系统上存储和处理数据,以提高性能和可扩展性。 2. **数据压缩**:为了优化内存使用,flexstore可能会集成数据压缩算法,能够在不影响...

    flex的一些源码

    flexstore_src可能包含用于存储和检索应用程序数据的自定义类和方法,这在实现数据驱动的应用程序中非常重要。 - 本地存储:使用LocalSharedObject可以在客户端存储小量数据,无需服务器交互,适用于缓存或用户...

    仿照Flexstroe3写的一个员工管理应用 (四)

    本项目可能是一个学习和实践Flexstore3功能的实例,旨在实现员工信息的增删改查等基本管理功能。 在描述中提到的“博文链接:https://lianzhong-huang.iteye.com/blog/995190”是一个外部资源,可能包含了该项目的...

    仿照Flexstroe3写的一个员工管理应用 (二)

    在员工管理应用中,我们可以创建一个`EmployeeStore`,它继承自Flexstore3的基类,并实现对员工数据的CRUD(创建、读取、更新、删除)操作。 接着,我们要了解Flexstore3的数据模型。在我们的例子中,`Employee`...

    flex经典实例(flexstroe)flex+spring+hibernate

    Flex经典实例(flexstore)是将Adobe Flex与Spring和Hibernate框架集成的一个开发案例,它展示了如何在富互联网应用程序(RIA)中实现后端服务的高效交互。Flex作为前端UI技术,提供用户友好的图形界面,而Spring作为...

    flextore源代码

    在flexstore中,可能会看到如何通过数据绑定实现动态更新视图,以反映数据模型的变化。 7. **事件处理**:Flex应用中的用户交互通常通过事件驱动来实现。在flexstore源代码中,你会找到许多事件监听器,它们响应...

Global site tag (gtag.js) - Google Analytics