0

我目前正在构建一个与项目的 RSS/XML 提要相关的 Flash 应用程序。我现在被卡住了,因为我不断收到这个错误:

打开 URL 'http://distilleryimage6.instagram.com/.jpg' 时出错 错误 #2044:未处理的 IOErrorEvent:。文本=错误 #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,因此您不需要下面的行,var picURL:String = "http://distilleryimage6.instagram.com/" + ritPic + ".jpg";因为ritPic它已经是完整的 URL。

于 2012-11-09T17:24:17.747 回答