Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在应用程序启动/初始化之前在flex中加载xml文件_Xml_Apache Flex_Flash_Actionscript 3_E4x - Fatal编程技术网

在应用程序启动/初始化之前在flex中加载xml文件

在应用程序启动/初始化之前在flex中加载xml文件,xml,apache-flex,flash,actionscript-3,e4x,Xml,Apache Flex,Flash,Actionscript 3,E4x,我有一个配置xml文件,我需要在flex应用程序启动之前解析它的值 我创建了一个静态类,允许检索xml配置文件中的值 我在应用程序第一次加载时初始化这个类,但是由于xml文件是用一个加载类加载的,该类同步加载一个xml文件,所以在实际加载xml文件之前,该类被要求提供值,因此它抛出了一个错误 有没有一种方法可以同步加载这个xml文件,或者有人可以建议解决这个问题?我们不能将文件作为类变量嵌入,因为我们需要能够远程更改值。使用状态如何?默认状态显示xml加载时的微调器,加载过程的完整事件的处理程序

我有一个配置xml文件,我需要在flex应用程序启动之前解析它的值

我创建了一个静态类,允许检索xml配置文件中的值

我在应用程序第一次加载时初始化这个类,但是由于xml文件是用一个加载类加载的,该类同步加载一个xml文件,所以在实际加载xml文件之前,该类被要求提供值,因此它抛出了一个错误


有没有一种方法可以同步加载这个xml文件,或者有人可以建议解决这个问题?我们不能将文件作为类变量嵌入,因为我们需要能够远程更改值。

使用状态如何?默认状态显示xml加载时的微调器,加载过程的完整事件的处理程序更改为另一个状态,该状态删除微调器并添加主容器


不,您不能在Flex中同步加载文件

您需要覆盖set initialized函数

   <?xml version=”1.0″ encoding=”utf-8″?>
    <mx:Application
        xmlns:mx=”http://www.adobe.com/2006/mxml”
        preinitialize=”preInitHandler(event)”>

        <mx:Script>
            <![CDATA[

                private function preInitHandler (event : Event) : void
                {
                   //load the xml, add the xmlCompleteHandler as a listener
                }

                private function xmlCompleteHandler (event : Event) : void
                {
                    //handle the xml
                    super.initialized = true;
                }

                override public function set initialized (value : Boolean) :
                    void
                {
                    // don't do anything, so we wait until the xml loads
                }

            ]]>
        </mx:Script>

    </mx:Application>

好把戏,库奥,但是。。。
我们必须处理在框架调用之前加载XML文件的情况
已初始化=真

大概是这样的: private var_fileLoaded:Boolean=false
private var_initialized:Boolean=false

私有函数xmlCompleteHandler(事件:事件):void
//处理xml
_fileLoaded=true
super.initialized=\u fileLoaded&&u initialized
}
重写已初始化的公共函数集(值:布尔):void{
_初始化=值;
super.initialized=\u fileLoaded&&u initialized;


}

我发现,当应用程序联机时,重写initialized属性不会处理得很好

相反,您最好使用property creationPolicy。当设置为“none”时,此属性将保留容器的子创建,直到调用方法createComponentsFromDescriptors为止

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
                layout="absolute"
                preinitialize="{loadStuff();}"
                creationPolicy="none">

<mx:Script>
    <![CDATA[

        private function loadStuff():void {
            // Load your stuff here
        }

        private function loadStuffHandler(event:Event):void {
            // This should be called when loading (from loadStuff method) finishes
            createComponentsFromDescriptors();
        }

    ]]>
</mx:Script>

</mx:Application>

re:Jami。。。
createComponentsFromDescriptors()现在是
createDeferredContent()