Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Вывод фотографий друзей (http://www.flasher.ru/forum/showthread.php?t=142662)

Agni 27.07.2010 19:42

Вывод фотографий друзей
 
надо вывести список друзей, просматривающего приложение
вывожу в qwe_tl - компонент TileList
наполняю его экземплярами мувиклипа friend_list из библиотеки
Код AS3:

package vk
{
        import flash.net.*;
        import flash.display.*;
        import flash.events.*;
        import flash.text.*;
        import vk.VkApiNode;
 
        public class Main extends MovieClip
        {
                private var api_id:Number = 11111111;
                private var api_secret:String = "sdfsdsdfsd";
                private var api:VkApiNode;
                private var viewer_id;
                private var server_url;
                private var url_loader:URLLoader;
                private var url_request:URLRequest;
                private var query:String;
 
                public function Main():void
                {
                        viewer_id = LoaderInfo(root.loaderInfo).parameters.viewer_id;
                        server_url = 'http://api.vkontakte.ru/api.php?';
                        api = new VkApiNode(viewer_id,api_id,api_secret,true,'XML','2.0',server_url);
                        query = api.getFriends();
                        url_request = new URLRequest(query);
                        url_loader = new URLLoader  ;
                        url_loader.addEventListener(Event.COMPLETE,friendsLoaded);
                        url_loader.load(url_request);
                }
                public function friendsLoaded(event:Event):void
                {
                        var responseFriends:XML = new XML(url_loader.data);
                        if (responseFriends.error_code != 7)
                        {
                                var all_friends:Array = new Array  ;
                                for each (var fid:XML in responseFriends.*)
                                {
                                        all_friends.push(fid);
                                }
                                // получаем профили друзей, используя метод getProfiles
                                var fields:Array = new Array  ;
                                fields = ['first_name,last_name,photo_medium'];
                                getProfiles(all_friends,fields);
                        }
                        else
                        {
                                friends_tf.text = 'Нет доступа к списку друзей';
                        }
                }
                public function getProfiles(uids:Array,fields:Array):void
                {// функция получения профилей
                        query = api.getProfiles(uids,fields);
                        url_request = new URLRequest(query);
                        url_loader = new URLLoader  ;
                        url_loader.addEventListener(Event.COMPLETE,profilesLoaded);
                        url_loader.load(url_request);
                }
                public function profilesLoaded(event:Event):void
                {
                        var photoLoader:Loader = new Loader  ;
                        var responseFriendsProfiles:XML = new XML(url_loader.data);
                        for each (var user:XML in responseFriendsProfiles.*)
                        {
                                var temp:friend_list = new friend_list  ;
                                var stroka:String = user.first_name + ' ' + user.last_name;
                                temp.title_txt.text = stroka;
                                var photo = user.photo_medium;
                                var request2:URLRequest = new URLRequest(photo);
                                photoLoader.load(request2);
                                photoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaded);
                                qwe_tl.addItem({source:temp});
                        }
                        function onLoaded():void
                        {
                                photoLoader.width = 150;
                                photoLoader.height = 150;
                                temp.addChild(photoLoader);
                        }
                }
        }
}

фотография выводится только у самого нижнего элемента TileList
подскажите, пожалуйста, как исправить :umnik2:

udaaff 27.07.2010 19:55

Код AS3:

package vk
{
        import flash.net.*;
        import flash.display.*;
        import flash.events.*;
        import flash.text.*;
        import vk.VkApiNode;
 
        public class Main extends MovieClip
        {
                private var api_id:Number = 11111111;
                private var api_secret:String = "sdfsdsdfsd";
                private var api:VkApiNode;
                private var viewer_id;
                private var server_url;
                private var url_loader:URLLoader;
                private var url_request:URLRequest;
                private var query:String;
 
                public function Main():void
                {
                        viewer_id = LoaderInfo(root.loaderInfo).parameters.viewer_id;
                        server_url = 'http://api.vkontakte.ru/api.php?';
                        api = new VkApiNode(viewer_id,api_id,api_secret,true,'XML','2.0',server_url);
                        query = api.getFriends();
                        url_request = new URLRequest(query);
                        url_loader = new URLLoader  ;
                        url_loader.addEventListener(Event.COMPLETE,friendsLoaded);
                        url_loader.load(url_request);
                }
                public function friendsLoaded(event:Event):void
                {
                        var responseFriends:XML = new XML(url_loader.data);
                        if (responseFriends.error_code != 7)
                        {
                                var all_friends:Array = new Array  ;
                                for each (var fid:XML in responseFriends.*)
                                {
                                        all_friends.push(fid);
                                }
                                // получаем профили друзей, используя метод getProfiles
                                var fields:Array = new Array  ;
                                fields = ['first_name,last_name,photo_medium'];
                                getProfiles(all_friends,fields);
                        }
                        else
                        {
                                friends_tf.text = 'Нет доступа к списку друзей';
                        }
                }
                public function getProfiles(uids:Array,fields:Array):void
                {// функция получения профилей
                        query = api.getProfiles(uids,fields);
                        url_request = new URLRequest(query);
                        url_loader = new URLLoader  ;
                        url_loader.addEventListener(Event.COMPLETE,profilesLoaded);
                        url_loader.load(url_request);
                }
                public function profilesLoaded(event:Event):void
                {
                        var responseFriendsProfiles:XML = new XML(url_loader.data);
                        for each (var user:XML in responseFriendsProfiles.*)
                        {
                                var temp:friend_list = new friend_list  ;
                                var stroka:String = user.first_name + ' ' + user.last_name;
                                temp.title_txt.text = stroka;
                                var photo = user.photo_medium;
                                var request2:URLRequest = new URLRequest(photo);
                                var photoLoader:Loader = new Loader();
                                photoLoader.load(request2);
                                photoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaded);
                                temp.addChild(photoLoader);
                                qwe_tl.addItem({source:temp});
                        }
 
                }
                private function onLoaded(event:Event):void
                {
                        event.target.width = 150;
                        event.target.height = 150;
                }
        }
}


Agni 27.07.2010 21:48

спасибо

забыл что photoLoader должен для каждого мс создаваться

только не понятно, как temp.addChild(photoLoader) работает вне функции-приемника onLoaded

ps event.target.width = 150; - так не дает изменять - свойство только для чтения :(

udaaff 27.07.2010 21:57

Ошибся.
Код AS3:

var loader:Loader = Loader(event.target.loader);
loader.width = 150;
loader.height = 150;


Agni 27.07.2010 23:44

:victory:

GBee 29.07.2010 02:32

http://vkontakte.ru/developers.php?o=-1&p=friends.get

Можете использовать один запрос ;о)


Часовой пояс GMT +4, время: 21:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.