加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex 历史管理

发布时间:2020-12-15 01:33:30 所属栏目:百科 来源:网络整理
导读:使用历史管理,用户可以用浏览器的后退和前进按钮来导航程序。比如,用户可以单击 TabNavigator 或者 Accordion 容器的选项卡,然后单击浏览器的后退按钮回到先前的选项卡。 Flex 中的所有导航容器都自动支持历史管理。如果想关闭这些容器的历史管理,只要把

使用历史管理,用户可以用浏览器的后退和前进按钮来导航程序。比如,用户可以单击TabNavigator或者 Accordion容器的选项卡,然后单击浏览器的后退按钮回到先前的选项卡。

Flex中的所有导航容器都自动支持历史管理。如果想关闭这些容器的历史管理,只要把其historyManagementEnabled属性设置为false即可。如下所示:

<mx:TabNavigator historyManagementEnabled = “false”>

ViewStack容器的历史管理默认情况下是禁用的。

?

特别要注意的是在预览本地文件时,IE不能启用历史管理,只有将文件部署到Web服务器或是通过HTTP URL 访问文件才能启用

?

当然也可以构建自定义的历史管理器,

自定义管理类实现的6个步骤:

(1)??? HistoryManager类注册该组件。

(2)??? 在该组件中实现loadState()方法。

(3)??? 在该组件中实现saveState()方法。

(4)??? 在该组件实现toString()方法。

(5)??? 调用HistoryManager类的各种静态方法。

?

?

如下所示:

这是自己参考的《Flex 权威指南》,没写详细,真正用的时候还得查阅具体资料。

<?xml version="1.0" encoding="utf-8"?>

<mx:HorizontalList xmlns:fx="http://ns.adobe.com/mxml/2009"

????????????? ?? xmlns:s="library://ns.adobe.com/flex/spark"

????????????? ?? xmlns:mx="library://ns.adobe.com/flex/mx"

????????????? ?? implements="mx.managers.IHistoryManagerClient"

????????????? ?? creationComplete="registerWithHistoryManager()" height="142" width="492" dataProvider="{dataArr}">

??? <fx:Script>

?????? <![CDATA[

?????????? import mx.collections.ArrayCollection;

?????????? import mx.managers.HistoryManager;

?????????? import mx.managers.IHistoryManagerClient;

?

?????????? [Bindable]

?????????? private var dataArr:ArrayCollection = new ArrayCollection([{name:'laopo'},{name:'yaner'}]);

??????????

?????????? private function registerWithHistoryManager():void

?????????? {

????????????? //HistoryManagersave()方法保存了组件的当前状态,在第一次注册组件时,必须调用save()方法。

????????????? HistoryManager.register(this);

????????????? HistoryManager.save();?? ??

?????????? }

??????????

?????????? /**实现saveState方法*/

?????????? public function saveState():Object{

????????????? var state:Object = new Object();

????????????? state.selectedIndex = this.selectedIndex;

????????????? return state;

?????????? }

??????????

?????????? /**实现loadState方法*/

?????????? public function loadState(state:Object):void

?????????? {

????????????? var newIndex:int;

????????????? if(state){

????????????????? newIndex = int(state.selectedIndex);

????????????? }else{

????????????????? newIndex = -1;

????????????? }

????????????? if(newIndex != selectedIndex){

????????????????? selectedIndex = newIndex;

????????????????? //派发事件

????????????? }

?????????? }

??????????

?????? ]]>

??? </fx:Script>

??? <fx:Declarations>

?????? <!-- 将非可视元素(例如服务、值对象)放在此处 -->

??? </fx:Declarations>

</mx:HorizontalList>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读