0

hddのどこにでもある可能性のあるxmlファイルを読み込もうとしていますが、これは私がそれを参照するために行ったことですが、後でファイルを読み込もうとすると、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を参照してください。

ありがとう

4

3 に答える 3

3

その答えはAIRアプリケーションでのみ機能することに注意してください!

于 2009-08-19T12:43:20.063 に答える
1

ローカルの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ファイルを開く場合は、読む必要があります。非同期で。

于 2009-07-30T16:06:44.927 に答える
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 ファイルをロードしています。それは誰かを助けるかもしれません...

于 2010-05-18T01:03:31.297 に答える