2009-07-30 2 views
0

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

здесь код

пакета { импорта 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, он дает мне ошибку UNFOUND файла. Есть ли что-нибудь, что я могу сделать? причина, например, для mp3 есть специальный класс для загрузки файла, см http://www.flexiblefactory.co.uk/flexible/?p=46

благодаря

ответ

1

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

3

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

0
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. Это может помочь кому-то ...

Смежные вопросы