문제

XML 파일 마녀를로드하려고 노력하려고 노력하고 있습니다. HDD에서는이를 탐색하기 위해 한 일이지만 나중에 파일을로드하려고 할 때 SWF의 동일한 경로 만 볼 수 있습니다. 파일

코드는 다음과 같습니다

패키지 {import 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);
    }
}

}

SWF와 동일한 디렉토리가 아닌 XML 파일을 열면 근거가없는 파일 오류가 발생합니다. 제가 할 수 있는게 있나요? 예를 들어 MP3의 원인 원인 파일을로드하기위한 특별한 클래스가 있습니다. http://www.flexiblefactory.co.uk/flexible/?p=46

감사해요

도움이 되었습니까?

해결책

로컬 XML 파일을로드하므로 urlRequest 대신 Filestream.Read ()를 사용하려고합니다. 또한 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 Applications에만 적용됩니다!

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