【问题标题】:Flex Application as Singleton (Flash Builder 4.6, Eclipse)作为 Singleton 的 Flex 应用程序(Flash Builder 4.6、Eclipse)
【发布时间】:2012-08-09 06:34:15
【问题描述】:

我有一个通过 Eclipse 启动的 Flex 应用程序。 现在,如果我使用这些命令打开一个新选项卡(例如在 Firefox 中):

            var url:String = 'DeepLinkingProject.html#view=1';
            var urlReq:URLRequest = new URLRequest(url);
            navigateToURL(urlReq,'_blank');

我有同一个应用程序的两个实例。但我不希望那样。 我希望这两个共享相同的应用程序实例,如果我更新一个浏览器选项卡中的一个组件,我希望另一个浏览器选项卡同步。

这可能吗?!

测试示例:

<?xml version="1.0" encoding="utf-8"?>
 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:local="*" xmlns:test="test.*" creationComplete="init()" >
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
    <![CDATA[   
                             import flash.net.navigateToURL;

        import mx.events.BrowserChangeEvent;
        import mx.managers.BrowserManager;
        import mx.managers.IBrowserManager;
        import mx.utils.URLUtil;


        private var bm:IBrowserManager;
        private var isParsing:Boolean;
        private var title:String;

        private function init():void{
            bm = BrowserManager.getInstance();
            bm.init("","Start");
            bm.addEventListener(BrowserChangeEvent.BROWSER_URL_CHANGE, parseURL);
            callLater(parseURL);

        }

        private function parseURL():void{
            //isParsing = true;
            //var o:Object = URLUtil.stringToObject(bm.fragment);
            //if (o.view == undefined)
            //  o.view = "Home";
            //bm.setTitle(title);
            //isParsing = false;
        }

        private function updateU():void{
            var fragments:String = "";
            fragments = bm.fragment;

            btnA.label = fragments;

           /////////////////////////////////////////////////////////////////////////
           // e.g. After this call, a new Browser-Tab gets opened and the
                            // Button Component should have the same Label content

            navigateToURL(new URLRequest('DeepLinkingProject.html'));
        /////////////////////////////////////////////////////////////
                           }

        private function changeUrl():void{
            bm.setFragment('view=B');
            updateU();
        }
    ]]>
</fx:Script>

<mx:VBox>
    <s:Label id="header" text="Application started without Parameters"/>
    <mx:HBox borderStyle="solid">
        <s:Button id="btnA" click="changeUrl()"/>
    </mx:HBox>
</mx:VBox>

【问题讨论】:

    标签: flash apache-flex singleton adobe


    【解决方案1】:

    加载的闪存应用程序可以通过LocalConnection 进行通信。因此,您可以将消息从一个应用程序发送到另一个应用程序并复制行为。

    【讨论】:

    • 您可以在浏览器中使用它来加载 swfs
    • 好的。如果我这样做,我的工作就是同步所有内容。有没有办法让应用程序的单个实例可以通过多个窗口或浏览器选项卡访问?!
    • 不,这不可能。是的,您需要同步所有内容...您确定需要该功能吗?
    • 好的。还有其他替代方法可以做到这一点吗?是的,我们真的需要这个功能。
    • 这是我想到的唯一想法。您可以尝试等待某人的其他想法
    猜你喜欢
    • 2013-10-22
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 2012-11-10
    • 2012-03-28
    • 2012-04-20
    相关资源
    最近更新 更多