开发者社区 问答 正文

Flex4 读取xml配置文件内容:报错

我写了一个as文件,希望这个文件实例化对象时就读取配置文件内容,但现在始终读不到……

public class Constant extends Sprite {

    public var ROOT_URL:String = "";
            public var PMINFO_FILE_ROOT:String = ROOT_URL+"pminfo/";
    
    public function Constant(){
        var loader:URLLoader = new URLLoader();
        loader.dataFormat = URLLoaderDataFormat.TEXT;
        loader.addEventListener(Event.COMPLETE,loadCompleteHandler);
        loader.load(new URLRequest("ip.xml"));
    }
    
    private function loadCompleteHandler(event:Event):void{
        var vars:XML = new XML(event.currentTarget.data);
        ROOT_URL = "http://"+vars.ip+"/"+vars.name()+"/";
    }

……


在mxml文件中调用new Constant().PMINFO_FILE_ROOT时 ROOT_URL始终为空……

为什么呢?

展开
收起
kun坤 2020-06-07 20:45:34 598 分享 版权
1 条回答
写回答
取消 提交回答
  • 你不是定义的ROOT_URL:String = "";######

    引用来自“吃肉的兔子”的答案

    你不是定义的ROOT_URL:String = "";
    那我要实现在实例化对象时就读取到xml 的值并设置到变量中,在mxml文件中访问变量时是xml配置的值。这个需要怎么编写呢……
    ######

    你读取xml是需要时间的,并且什么时候加载完成是未知的

    最好的办法是在加载完成后dispatcher一个事件,然后监听处理。

    ######

    取属性 可以用 vars.@name

    protected function xmlLoaded(event:Event):void
    {
    var xml:XML = XML(event.target.data);

    for(var i:int = 0; i<xml.children().length(); i++)
    {
    var itemXml:XML = xml.child("item")[i];
    var item:ShortCutItem = new ShortCutItem();

    item.label = itemXml.@label ;
    item.icon = itemXml.@icon +"";
    item.moduleUrl = itemXml.@moduleUrl;

    item.winIcon = itemXml.@winIcon +"";

    item.visible = false;

    this.addElement(item);
    this.items.addItem(item);
     
    item.addEventListener(FlexEvent.CREATION_COMPLETE, item_completeHandler);

    }
    }

    可以参考下 我这段~

    2020-06-07 20:45:43
    赞同 展开评论