2

URLLoader を使用してサーバー (swf と同じドメイン) から XML ファイルをロードしようとしています。これは単純すぎるはずですが、エラー #2032: ストリーム エラーが発生します。

Mozilla が Flash Player にステータス コードを提供していないことを読んだことがありますが、HTTP ステータス イベントをトレースするとstatus=0と表示されるだけなので、参考にならないかもしれません。

Charles で HTTP トラフィックをスニッフィングしましたが、Flash は URL をロードしようとさえしていません。リクエストが行われないため、失敗することさえありません。

次のような内部 URL にある URL を参照できます: http://media.project:8080/audio/playlist.xml

そこに crossdomain.xml を入れてみました ( to-ports="8080" の有無にかかわらず) が、必要ないはずです。

onOpen イベントも onActivate イベントも発生せず、HTTPStatus が 1 つだけで、次に IOError が発生します。

Adobe の例から一般的な URLLoader コードをコピーしました。私の場合は次のようになります。

    public class PlaylistLoader extends EventDispatcher
{
    public var xmlLoader:URLLoader;
    public var url:String = '';

    public function PlaylistLoader(url:String)
    {
        url = url;
        trace(url);
        xmlLoader = new URLLoader();
        xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
        xmlLoader.addEventListener(Event.COMPLETE, onResult);
        xmlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
        xmlLoader.addEventListener(Event.OPEN, onOpen);
        xmlLoader.addEventListener(Event.ACTIVATE, onActivate);
    }

    public function loadData():void {
        var req:URLRequest = new URLRequest(url);
        trace(req);
        xmlLoader.load(req);
    }

    protected function onResult(e:Event):void
    {
        var xmlData:XML = e.target.data as XML;
        parseData(xmlData);
    }

    private function httpStatusHandler(event:HTTPStatusEvent):void {
        trace("httpStatusHandler: " + event);
    }

    protected function onOpen(e:Event):void
    {
        trace(e);
    }

    protected function onActivate(e:Event):void
    {
        trace(e);
    }

    protected function onIOError(e:IOErrorEvent):void
    {
        trace(e);
    }
4

2 に答える 2

3
url = url;

コンストラクターでlocal urllocal urlに設定します。その値をオブジェクト内に保存する場合は、オブジェクト メンバーをurl明示的に参照する (または別の名前を使用する)必要があります。

this.url = url;
于 2010-09-20T16:36:30.883 に答える
0

it seems url string still empty

public var url:String = '';

isn't it?

try

public var url:String = 'http://media.project:8080/audio/playlist.xml';
于 2010-09-20T16:34:26.100 に答える