我目前正在flash中构建一个与项目的RSS / XML feed相关的应用程序。我现在卡住了,因为我一直收到这个错误:
打开网址'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;
}
}
}
答案 0 :(得分: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');
}
这可以防止应用因特定错误而崩溃。错误仍然存在,记住这一点。您确实需要处理该错误。如果再发送你的应用程序就不会死在你身上。
答案 1 :(得分: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
该值是我注意到的完全限定的网址,因此您不需要var picURL:String = "http://distilleryimage6.instagram.com/" + ritPic + ".jpg";
之后的行,因为ritPic
已经是完整的网址。