Flash AS3 загрузить файл XML - PullRequest
0 голосов
/ 30 июля 2009

Я просто пытаюсь загрузить XML-файл, который может быть любым на жестком диске, это то, что я сделал, чтобы просмотреть его, но позже, когда я пытаюсь загрузить файл, он будет выглядеть только по тому же пути SWF-файла

вот код

пакет { импорт flash.display.Sprite; импорт flash.events. ; импорт flash.net. ;

public class cargadorXML extends Sprite {


    public var cuadro:Sprite = new Sprite();
    public var file:FileReference;
    public var req:URLRequest;
    public var xml:XML;
    public var xmlLoader:URLLoader = new URLLoader();

    public function cargadorXML() {
        cuadro.graphics.beginFill(0xFF0000);
        cuadro.graphics.drawRoundRect(0,0,100,100,10);
        cuadro.graphics.endFill();
        cuadro.addEventListener(MouseEvent.CLICK,browser);
        addChild(cuadro);

    }
    public function browser(e:Event) {

        file = new FileReference();
        file.addEventListener(Event.SELECT,bien);
        file.browse();

    }
    public function bien(e:Event) {
        xmlLoader.addEventListener(Event.COMPLETE, loadXML);
        req=new URLRequest(file.name);
        xmlLoader.load(req);
    }
    public function loadXML(e:Event) {
        xml=new XML(e.target.data);
        //xml.name=file.name;
        trace(xml);
    }
}

}

Когда я открываю XML-файл, который не находится в том же каталоге, что и SWF, это дает мне необнаруженную ошибку файла. что я могу сделать? например, для mp3 есть специальный класс для загрузки файла, см. http://www.flexiblefactory.co.uk/flexible/?p=46

спасибо

Ответы [ 3 ]

3 голосов
/ 19 августа 2009

Обратите внимание, что этот ответ работает только для приложений AIR!

1 голос
/ 30 июля 2009

Поскольку вы загружаете локальный XML-файл, вам нужно использовать FileStream.read (), а не URLRequest. Также обратите внимание, что file.name просто даст вам имя файла, а не полный путь, поэтому вам нужно сделать следующее:

 public function bien(e:Event) {
    var file:File = File.documentsDirectory.resolvePath(e.target);
    var fileStream:FileStream = new FileStream();
    fileStream.open(file, FileMode.READ);
    var prefsXML:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
    fileStream.close();
}

Возможно, вы захотите прочитать ссылку на FileStream (http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/filesystem/FileStream.html),, если вы открываете большой XML-файл, вам нужно будет прочитать его асинхронно.

0 голосов
/ 18 мая 2010
var cuadro:Sprite = new Sprite();
var file:FileReference;
var xml:XML;

function cargadorXML() {
    cuadro.graphics.beginFill(0xFF0000);
    cuadro.graphics.drawRoundRect(0,0,100,100,10);
    cuadro.graphics.endFill();
    cuadro.addEventListener(MouseEvent.CLICK,browser);
    addChild(cuadro);

}
function browser(e:Event) {

    file = new FileReference();
    file.addEventListener(Event.SELECT,bien);
    file.browse();

}
function bien(e:Event) {
    file.addEventListener(Event.COMPLETE, loadXML);
    file.load();
}
function loadXML(e:Event) {
    xml = new XML(e.target.data);
    trace(xml);
}

cargadorXML();

Загрузка локального файла XML. Это может кому-то помочь ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...