Flex存储变量

时间:2014-03-05 04:43:56

标签: flex

我是flex开发的新手,所以我需要帮助来理解我的需求的逻辑和解决方案, 我关注的是当我登录到特定页面时,我想在任何变量或任何集合中存储导航菜单名称,以便我可以通过该变量或集合数据检查我上次访问过的页面名称。 有没有可能我检查我访问的最后一页是什么。 我有这样的要求来处理flex页面中的刷新事件。 当我刷新页面时,我想回到同一页面 您的宝贵意见和知识是必要的。

2 个答案:

答案 0 :(得分:1)

为什么不创建一个NavigationManager类,您可以在静态变量中存储所需的信息。

例如

class MyNavigationManager
{

    private static var _visitedPages:Array = [];

    public static function pushPage(pageName:String):void
    {
        _visitedPages.push(pageName);
    }

    public static function get currentPageName():String
    {
        if(_visitedPages.length > 0 )
             return _visitedPages[_visitedPages.length -1 ];

        return null;
    }

    // ...something else you may need, maybe popPage():Sting...
}

要使用它,您可以从应用中的任何地方拨打电话

MyNavigationManager.pushPage("Home");
MyNavigationManager.pushPage("User Account");
trace(MyNavigationManager.currentPageName);

更新1

由于您需要基于浏览器类型的独立SharedObject(根据评论中的要求...)

获取浏览器名称

var userAgent : String  = String(ExternalInterface.call("function(){return navigator.userAgent}"));
trace (userAgent);

使用userAgent创建不同的共享对象,并像这样初始化。

public var sharedObj:SharedObject;

private function initSharedObject():void
{
    sharedObj = SharedObject.getLocal("SO_"+userAgent.subStr(0,6));
}

希望现在好一点。

答案 1 :(得分:0)

public function initSharedObject(userAgent:String):String
    {
        Alert.show("userAgent : "+userAgent+" substring : "+userAgent.substr(0,15));
        sharedObj = SharedObject.getLocal("SO_"+userAgent.substr(0,15));
        if (sharedObj.size > 0)
            var currentState:String =sharedObj.data.tasks;
        //Alert.show("curentState in init "+currentState);
        return currentState;
    }

    public function saveTasks(curentState:String):void {
        //Alert.show("curentState  "+curentState);
        sharedObj.data.tasks = curentState;
        sharedObj.flush();
    }

    public function deleteSavedTasks(userAgent:String):void {
        //Alert.show("Im in Delete ...");
        //Alert.show("userAgent : "+userAgent+" substring : "+userAgent.substr(0,11));
        sharedObj = SharedObject.getLocal("SO_"+userAgent.substr(0,15));
        sharedObj.clear();
    }

嗨,Adrain, 上面的代码我在我的应用程序中的共享对象处理中使用,但userAgent String的子字符串给我输出:

IE 11: userAgent:Mozilla / 5.0(Windows NT 6.1; Trident / 7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4。 0E; InfoPath.3; MS-RTC LM 8; rv:11.0)像Gecko子串:Mozilla / 5.0

Mozilla: userAgent:Mozilla / 5.0(Windows NT 6.1; rv:27.0)Gecko / 20100101 Firefox / 27.0子串:Mozilla / 5.0

请检查上面的代码及其子串输出。 请告诉我。