Вопрос

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

вот этот код

пакет { импортировать flash.display.Спрайт;импортируйте flash.события.;импорт 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

Спасибо

Это было полезно?

Решение

Поскольку вы загружаете локальный 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-файл, вам нужно будет прочитать его асинхронно.

Другие советы

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

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-файла.Это могло бы кому-то помочь...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top