【问题标题】:Loading XML file using as3使用 as3 加载 XML 文件
【发布时间】:2011-10-01 06:33:26
【问题描述】:
public class loadXML extends Sprite
{
    public var xmlFileName:String;
    public var urlL:URLLoader = new URLLoader();
    public var urlR:URLRequest;
    public var xml:XML = new XML();

    public function loadXML(xmlS:String):void
    {
        xmlFileName = xmlS;
        urlR =  new URLRequest(xmlFileName);            
        urlL.addEventListener(ProgressEvent.PROGRESS, onProgressAction);
        urlL.addEventListener(Event.COMPLETE, onLoadedAction);
        urlL.addEventListener(IOErrorEvent.IO_ERROR, errorAction);
        urlL.load(urlR);            
    }
    public function onLoadedAction(e:Event):void
    {
        xml = XML(e.target.data);
        //trace(xml);
    }       
    public function onProgressAction(e:ProgressEvent):void
    {
        //trace("loading xml");
    }
    public function errorAction(e:IOError):void
    {
        trace(e.toString());
    }
}
}

//主类

package
{
import com.loadXML;
import flash.display.Sprite;

public class xmlFileView extends Sprite
{
    public var xmlData:loadXML;
    public function xmlFileView():void
    {
        init();
    }
    private function init():void
    {
        xmlData = new loadXML("list.xml");
        var xmlF:XML = XML(xmlData);
        //trace(xmlF.video[0].path);

    }
}

}

这里我实例化了 loadXML 类。但我无法访问 xml,是吗?我怎样才能做到这一点?

这是我的 XML 文件。

<?xml version="1.0" encoding="iso-8859-1"?>
<videos>
    <video>
        <path>video1.flv</path>
    </video>
    <video>
        <path>video2.flv</path>
    </video>
    <video>
        <path>video3.flv</path>
    </video>
    <video>
        <path>video4.flv</path>
    </video>
</videos>

【问题讨论】:

    标签: actionscript-3 actionscript flash-cs4 flash-cs5


    【解决方案1】:

    您那里的 xml 看起来不像 xml :) 这里应该如何引用trace(xmlF.video.path[0]);

    <?xml version="1.0" encoding="utf-8" ?>
    <data>
        <video>
            <path>video1.flv</path>
            <path>video2.flv</path>
            <path>video3.flv</path>
            <path>video4.flv</path>
        </video>
    </data>
    

    更新

    你不能这样做:

    xmlData = new loadXML("list.xml");
    var xmlF:XML = XML(xmlData);
    

    因为加载某些东西需要时间,而且脚本不会等到加载完成。

    如果您想实现这一点,您需要按照以下方式进行: 在loadXML类编辑函数中:

    public function onLoadedAction(e:Event):void
    {
        xml = XML(e.target.data);
        // dispatch event when the XML has been loaded and xml value is defined.
        dispatchEvent ( new Event ( Event.COMPLETE ) )
    }
    

    在 xmlFileView 类中编辑:

    private function init():void
    {
        xmlData = new loadXML("list.xml");
        // listen for loading completed
        xmlData.addEventListener ( Event.COMPLETE, handleXMLLoaded );
    }
    
    private function handleXMLLoaded (e:Event):void
    {
       var xmlF:XML = xmlData.xml
       trace(xmlF.video.path[0]); 
    }
    

    【讨论】:

    猜你喜欢
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多