当我尝试将登录的Facebook用户朋友列表中的个人资料图片加载到as3画布应用程序时,我得到了一个神秘的结果。几乎每个(非Facebook )应用程序我都在需要加载图像的地方使用以下内容:
private function loadPic():void
{
var url:String = Facebook.getImageUrl(_friendslistObjectArray[_loadCount].id);
_picLoader = new Loader();
var req:URLRequest = new URLRequest(url);
_picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPicLoaded);
_picLoader.load(req);
}
private function onPicLoaded(evt:Event):void
{
_picLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onPicLoaded);
// grab image from loader event to use it
var image = evt.target.content;
trace("this trace won't even show up and the program silently fails unless the line above this is removed");
_loadCount++;
loadPic();
}
我无法从事件对象中检索图像,并且根本没有给出任何错误。这一切都只是默默无闻。如果我删除 var image = evt.target.content 行,则该进程将遍历整个数组。
我想不出有任何理由会发生这种情况。此外,如果我查看萤火虫的网络活动,我看到只要我没有我刚才提到的那条线,就会看到图像被加载。我似乎无法从事件对象获取图像数据以将其添加到舞台或容器动画片段。
这应该很容易。我在这里绞尽脑汁想弄清楚我错过了什么或者出了什么问题。有什么想法吗?谢谢!
答案 0 :(得分:0)
找到答案:
这一行:
Security.loadPolicyFile("http://profile.ak.fbcdn.net/crossdomain.xml");
在 _picLoader.load(req)之前放置; 修复问题。
这是一个跨域错误,但由于某些未知原因,错误没有报告,直到我将 var image = evt.target.content; 放入try / catch并读取错误消息。< / p>
道具到这篇文章的答案: Load profile image from Facebook with Actionscript 3
答案 1 :(得分:0)
evt.target
应该是LoaderInfo
个对象,请尝试以下代码:
var image = (evt.targe as LoaderInfo).loader.content;