PDA

Просмотр полной версии : [Вконтакте] Вывод аватара в приложение


vasya87
13.01.2010, 18:20
В продолжение моих мучений с getProfiles.
Делаю запрос и получаю в его составе ссылку на аватар пользователя. Пытаюсь отобразить его внутри приложения. Для этого оставляю из их xml-ответа только ссылку и пытаюсь добавить
var pLoader:Loader;
var url:URLRequest;
//...
function onComplete(e:Event):void{
var xml:XML=new XML(e.target.data); //получаю xml из запроса getprofiles
var ava:String;
ava=new String(xml.children().*[3]); //забираю ссылку на фото
text_txt.text = ava; //вывожу для проверки, что в ava именно ссылка
pLoader=new Loader();
url=new URLRequest(ava);
pLoader.load(url);
pLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
}

function loaded(e:Event):void {
pLoader.content.x=100;
pLoader.content.y=100;
addChild(pLoader.content);
}
И ничего не получается. В ava появляется текст типа "http://cs805.vkontakte.ru/u1/c_1.jpg", но запрос не делает.
При чём если перед url=new URLRequest(ava); нагло прописать ту же ссылку в ava="http://cs805.vkontakte.ru/u1/c_1.jpg" - работает.
А с текстом, получаемім из xml - нет, хотя он по идее такой же.
На всякий случай пример получаемого xml:
<response list="true">
<user>
<uid>uid</uid>
<first_name>имя</first_name>
<last_name>фамилия</last_name>
<photo>http://cs805.vkontakte.ru/u1/c_1.jpg</photo>
</user>
</response>

udaaff
13.01.2010, 19:14
Если все так, как описано, то должно работать.

xpymbl4
13.01.2010, 19:18
Попробуйте просто:
pLoader.x=100;
pLoader.y=100;
addChild(pLoader);

vasya87
13.01.2010, 19:49
Если все так, как описано, то должно работать.вот это самое грустное:)

xpymbl4
пробовал
(ещё пробовал получать данные ava=xml.user.photo и сразу в string
var ava:String=new String(e.target.data);
var p1=ava.indexOf("http");
var p2=ava.indexOf("jpg");
ava=ava.substring(p1,p2+3);
но без толку)
наверно, нужно карму менять...

xpymbl4
13.01.2010, 20:09
Попробуйте так:
url я назвал незарегестрированным именем pUrl (привычка на всякий пожарный).
var pLoader:Loader;
var pUrl:URLRequest;
//...
function onComplete(e:Event):void{
var response:XML = new XML(event.target.data);
var ava:String = '';
if (response.@list == 'true') {
var userPhoto:XMLList = response.user.photo;
ava = userPhoto[0];
}
if (ava != '') {
pLoader = new Loader();
pUrl = new URLRequest(ava);
pLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
pLoader.load(pUrl);
}
else {
trace('error');
}
}

vasya87
14.01.2010, 13:43
не помогло, но и error не выводит
понаставлял заглушек:
function onComplete(e:Event):void{
var response:XML = new XML(e.target.data);
var ava:String = '';
if (response.@list == 'true') {
var userPhoto:XMLList = response.user.photo;
ava = userPhoto[0];
}
if (ava != '') {
pLoader = new Loader();
pUrl = new URLRequest(ava);
text_txt.text = "test1\n"; /////заглушка
pLoader.load(pUrl);
pLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
text_txt.text += "test2\n"; /////заглушка
}
else {
Img.text_txt.text +="error\n";
}
}
function loaded(e:Event):void {
text_txt.text +="test3\n"; /////заглушка
pLoader.content.x=120;
pLoader.content.y=150;
addChild(pLoader.content);
text_txt.text +="test4\n"; /////заглушка
pLoader.x=150;
pLoader.y=180;
addChild(pLoader);
text_txt.text +="test5"; /////заглушка
}
в итоге выводит только test1, tes2, test3

xpymbl4
14.01.2010, 14:54
Забудьте про .content
оставьте:
function loaded(e:Event):void {
text_txt.text +="test3\n"; /////заглушка
pLoader.x=150;
pLoader.y=180;
addChild(pLoader);
text_txt.text +="test5"; /////заглушка
}

vasya87
14.01.2010, 18:33
да, теперь пошло. ура:yahoo: