Вывод фото в таблице рекордов.

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Аватара пользователя
12funteam89
Сообщения: 99
Зарегистрирован: 29 окт 2010, 15:34

Вывод фото в таблице рекордов.

Сообщение 12funteam89 »

Помогите пожалуйста в таблицу рекордов вывести аватарки пользователей, заранее огромное спасибо.
Вот код таблицы рекордов:

Код: Выделить всё

 import vk.APIConnectionimport flash.display.Loader;import flash.net.URLRequest;import vk.*;import vk.api.*;  var flashVars:Object=stage.loaderInfo.parameters as Object;var VK:APIConnection=new APIConnection(flashVars); var host:String = 'http://...'; var xml:XML = new XML();var uids1:String = '';var auth_key:String=flashVars['auth_key']; getScores();  function getScores():void{    var loader:URLLoader = new URLLoader();    loader.load(new URLRequest(host+'/get_score.php?uid='+flashVars["viewer_id"]+'&auth='+auth_key));    loader.addEventListener(Event.COMPLETE,scoreLoaded);} function scoreLoaded(e:Event):void{    xml = new XML(e.target.data);    for (var i:uint;i<xml..user.length();i++)    {        if (i!=xml..user.length())        {            uids1+=xml..user[i].uid+',';        }        else        {            uids1+=xml..user[i].uid;        }    }    getProfiles();} function getProfiles():void{    VK.api('getProfiles',{uids:uids1,fields:'first_name,last_name'},ProfilesLoaded,APIError);} function ProfilesLoaded(data:Object):void{    for(var i:uint;i<xml..user.length();i++)    {    result_txt.appendText(data[i].first_name+" "+data[i].last_name+" : "+xml..user[i].score+'\n');        }} function APIError(data:Object):void{    result_txt.text=data.error_msg;} btn2.addEventListener(MouseEvent.CLICK,postScore); function postScore(e:MouseEvent):void{var loader:URLLoader = new URLLoader();var request:URLRequest = new URLRequest(host+'/score.php');var variable:URLVariables = new URLVariables();variable['uid']=flashVars['viewer_id'];variable['score']=scoreText.textvariable['auth']=auth_key;request.data= variable;loader.load(request);loader.addEventListener(Event.COMPLETE,scorePosted);} function scorePosted(e:Event):void{    scoreText.appendText(' OK');    getScores();} 
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Вывод фото в таблице рекордов.

Сообщение Александр »

Аватара пользователя
12funteam89
Сообщения: 99
Зарегистрирован: 29 окт 2010, 15:34

Re: Вывод фото в таблице рекордов.

Сообщение 12funteam89 »

Я сделал вот так, но почему то выводиться только аватарка того, кто последний по очкам в таблице рейтинга.

Код: Выделить всё

 function getProfiles():void{    VK.api('getProfiles',{uids:uids1,fields:'first_name,last_name,photo'},ProfilesLoaded,APIError);} function ProfilesLoaded(data:Object):void{        for(var i:uint;i<xml..user.length();i++)    {    result_txt.appendText(data[i].first_name+" "+data[i].last_name+" : "+xml..user[i].score+'\n');     var photoRequest:URLRequest=new URLRequest(data[i]["photo"]); photo.load(new URLRequest(data[i]["photo"]));photo.x=300;photo.y= 150*i+10;addChild(photo);    }} 
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Вывод фото в таблице рекордов.

Сообщение Александр »

12funteam89
Где слушатель того что photoRequest получил данные? Основу того как работает ActionScript не совсем понимаешь?
Аватара пользователя
12funteam89
Сообщения: 99
Зарегистрирован: 29 окт 2010, 15:34

Re: Вывод фото в таблице рекордов.

Сообщение 12funteam89 »

Все у меня получилось, сделал вывод как в этом уроке http://flapps.ru/forum/topic3403.html, но столкнулся еще с одной проблемой ,когда нажимаешь на аву не переходит на его страницу.
Прошу помощи.
Вот код:

Код: Выделить всё

 function getProfiles():void{    VK.api('getProfiles',{uids:uids1,fields:'first_name,last_name,photo'},ProfilesLoaded,APIError);} function ProfilesLoaded(data:Object):void{    var count = data.length;             // массив блоков с информацией о пользователях            var usersBoxArray = new Array();                        // стиль текста            var textformat:TextFormat = new TextFormat();            textformat.align = TextFormatAlign.CENTER;             textformat.font = 'Tahoma';            textformat.size = 9;            textformat.color = 0x2B587A;          for(var i:uint;i<xml..user.length();i++)    {    var user_box = new MovieClip;                // рамка блока                user_box.graphics.beginFill(0xDAE1E8);                user_box.graphics.drawRect(0,0,80,95);                // заливка блока                user_box.graphics.beginFill(0xF7F7F7);                user_box.graphics.drawRect(1,1,78,93);                user_box.graphics.endFill();                                user_box.x = 10 + i * 85;                user_box.y = 10;                user_box.buttonMode = true;                user_box.useHandCursor = true;                user_box.mouseChildren = false;                // добавляем фото                var user_photo:UILoader = new UILoader  ;                user_photo.autoLoad = true;                user_photo.scaleContent = false;                user_photo.source = data[i]['photo'];                user_photo.move(15,10);                user_box.addChild(user_photo);                // добавляем имя                var user_name_tf:TextField = new TextField  ;                user_name_tf.width = 80;                user_name_tf.height = 60;                user_name_tf.wordWrap = true;                user_name_tf.defaultTextFormat = textformat;                user_name_tf.appendText(data[i].first_name+'\n'+data[i].last_name+'\n' +xml..user[i].score);                user_name_tf.x = 0;                user_name_tf.y = 60;                user_box.addChild(user_name_tf);                 usersBoxArray.push(user_box);                addChild(usersBoxArray[i]);                        // записываем id пользователя в массив                usersBoxArray[i].uid = data[i]['uid'];                // клик по блоку                usersBoxArray[i].addEventListener(MouseEvent.CLICK, function(e:MouseEvent){                                    //navigateToURL(new URLRequest('http://vkontakte.ru/id' + data[i]['uid']));                                    trace('http://vkontakte.ru/id' + e.currentTarget.uid);  //что тут не так?             }); 
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Вывод фото в таблице рекордов.

Сообщение Александр »

12funteam89
navigateToURL - переход на страницу, trace - вывод строки в окно вывода.
Попробуй раскомменьтить navigateToURL. С data['uid'] и e.currentTarget.uid посмотри что происходит...
Аватара пользователя
12funteam89
Сообщения: 99
Зарегистрирован: 29 окт 2010, 15:34

Re: Вывод фото в таблице рекордов.

Сообщение 12funteam89 »

Спасибо огромное. А то весь день сегодня с это таблицей рекордов мучаюсь.
И еще у меня остался последний вопрос)
Вот у меня допустим в массив записывается топ 50 игроков, а выводиться на экран только 10, как сделать кнопку далее , чтобы массив передвинулся на следующие 10 игроков?
maxx072
Сообщения: 38
Зарегистрирован: 13 мар 2011, 12:35

Re: Вывод фото в таблице рекордов.

Сообщение maxx072 »

Введи переменную счетчик var counter:int; при нажатии на кнопку прибавляй к ней 10 counter=counter+10; или отнимай если кнопка назад. а в выводе делай цикл по 10 штук и подставляй в индекс usersBoxArray[counter+i];
Аватара пользователя
12funteam89
Сообщения: 99
Зарегистрирован: 29 окт 2010, 15:34

Re: Вывод фото в таблице рекордов.

Сообщение 12funteam89 »

А можно поподробнее код?
maxx072
Сообщения: 38
Зарегистрирован: 13 мар 2011, 12:35

Re: Вывод фото в таблице рекордов.

Сообщение maxx072 »

примерно так

Код: Выделить всё

     var massivfotok:Array=new Array;    var massivimen1:Array=new Array;    var massivimen2:Array=new Array;        var counter:int=0;    // кнопка вперед    next.addEventListener(MouseEvent.CLICK, nextv);    function nextv(Event:MouseEvent)        {        counter=counter+10;            vivodinfa();        }        // кнопка назад    back.addEventListener(MouseEvent.CLICK, backv);    function backv(Event:MouseEvent)        {        counter=counter-10;            vivodinfa();        }           function getProfiles():void{    VK.api('getProfiles',{uids:uids1,fields:'first_name,last_name,photo'},ProfilesLoaded,APIError);} function ProfilesLoaded(data:Object):void{    var count = data.length;         for (var i=0; i<count; i++)            {                massivfotok[i] = data[i]['photo'];                massivimen1[i] = data[i]['first_name'];                 massivimen2[i] = data[i]['last_name'];                 }            vivodinfa();         }            function vivodinfa():void{                   // тут свой код вывода  и уже вставляй не data[i]['photo'] а massivfotok[counter+i]                   for(var i:int=0;i<10;i++)    {         var user_photo:UILoader = new UILoader  ;                user_photo.autoLoad = true;                user_photo.scaleContent = false;                user_photo.source =  massivfotok[counter+i];                user_photo.move(15,10);                user_box.addChild(user_photo);                // и т.д.                }                                } 
Ответить