0

現在、プロジェクトの RSS/XML フィードに関連するアプリケーションをフラッシュで構築しています。このエラーが発生し続けるため、現在立ち往生しています:

URL 'http://distilleryimage6.instagram.com/.jpg' を開く際のエラー エラー #2044: 未処理の IOErrorEvent:。text=エラー #2036: 読み込みが完了しませんでした。

文字列 picURL が正しく機能していないことはわかっていますが、機能しない原因が何かありますか? これは私のコードです:

package  {

import flash.display.*;
import flash.events.*;
import flash.net.*;


public class instagramFeed extends MovieClip {
    //link to #rit xml loader
    public var ritFileRequest = new URLRequest("http://instagram.com/tags/rit/feed/recent.rss");
    public var ritXmlLoader = new URLLoader();

    //link to #rochester xml loader
    // same as above public variables

    public function instagramFeed() {
        // constructor code
        trace("About to load...");

        //Loads #rit hashtag xml data.
        ritXmlLoader.load(ritFileRequest);
        ritXmlLoader.addEventListener(Event.COMPLETE, displayRITInfo);
    }

    //focuses on data with #rit hashtag
    public function displayRITInfo(e:Event):void{
        var ritInstagramData:XML = new XML(ritXmlLoader.data);
        var ritInfoList:XMLList = ritInstagramData.elements().item;
        trace(ritInfoList);

        //load the image
        var ritPic:String = ritInfoList.*::condition.@code;
        var picURL:String = "http://distilleryimage6.instagram.com/" + ritPic + ".jpg";
        trace(picURL);

        //show the image on the stage!
        var ritImageRequest:URLRequest = new URLRequest(picURL);
        var ritImageLoader:Loader = new Loader();
        ritImageLoader.load(ritImageRequest);

        addChild(ritImageLoader);

        ritImageLoader.x=200;
        ritImageLoader.y=100;
        ritImageLoader.scaleX = 3;
        ritImageLoader.scaleY = 3;

    }

}

}

4

2 に答える 2

0

存在しない URL にリクエストを送信すると、(少なくともこのインスタンスでは) IO エラーが発生します。http://distilleryimage6.instagram.com/.jpgブラウザにスローすると、エラーページが表示されます。これはあなたの問題です。ローダーを適切な URL に誘導すると、IO エラーが発生しなくなります

コード内で IO エラーを処理することも適切です。

var ritImageLoader:Loader = new Loader();
ritImageLoader.addEventListener( IOErrorEvent.IO_ERROR, this.ioErrorHandler );
ritImageLoader.load(ritImageRequest);

private function ioErrorHandler( e:IOErrorEvent = null ):void {
    trace('An IO Error has occurred. You can use this function to display an error to the user or load a placeholder or whatever you wish');
}

これにより、その特定のエラーが原因でアプリがクラッシュするのを防ぐことができます。エラーはまだあります。覚えておいてください。そのエラーを処理する必要があります。アプリがディスパッチされたとしても、アプリが死ぬことはありません。

于 2012-11-09T17:13:41.643 に答える
0

問題は、その RSS フィードの XML 解析にあります。

e4xでブラッシュアップすることをお勧めします。これは、まさにそれを行うための優れたリソースです: http://www.senocular.com/flash/tutorials/as3withflashcs3/?page=4

あなたの問題は次の行にあると思います:ritInfoList.*::condition.@code

この行を次のように変更してみてください

var ritInfoList:XMLList = ritInstagramData..item;  //this will get all the item nodes

次に、この行は次のようになります。

var ritPic:String = ritInfoList[2]; //this grabs the value from the 3rd link node as a test

その値は私が気づいた完全修飾 URLです。すでに完全な URL であるvar picURL:String = "http://distilleryimage6.instagram.com/" + ritPic + ".jpg";ため、次の行は必要ありません。ritPic

于 2012-11-09T17:24:17.747 に答える