![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2012
Сообщений: 7
|
Приветствую всех.
Есть необходимость реализовать переход по друзьям. Например, как сделано во всевозможных фермах. У каждого есть своя страница, а внизу список друзей. Так вот надо сделать, чтобы при нажатии на авотарку друга игрок переходил на его страницу. Что-то мне подсказывает, что использованием методов "friends.getAppUsers" и "getProfiles" здесь не обойдется. Подскажите, пожалуйста, кто знает. |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 7
|
Но это же переход на страницу пользователя, а мне нужно убрать объекты относящиеся к пользователю и создать объекты относящиеся к другу пользователя. Как в любой ферме.
Мне кажется, что я бы смог это реализовать, если мне кто-нибудь подскажет как рационально выводить иконки друзей. Желательно ранжируя по уровню. |
|
|||||
|
А разве это не вы пишете приложение? Если вы знаете как добавлять обьекты, относящиеся к пользователю, то именно вам лучше знать, чем кому-либо из посетителей форума, как эти обьекты убрать и построить новые для другого пользователя. Или же вы еще ничего не сделали и не знаете как сделать? В таком случае вы слишком далеко забежали и вопрос нужно ставить по другому: как вообще построить личный кабинет пользователя?
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
|
Извините, не понял.
Подходы всякие есть. Может выкинете сюда кусок кода в котором вы пытались получить и отобразить друзей и у вас не получилось. Тогда разговор будет более предметным. От этих вопросов зависят пути реализации: - что за игра - как идет взаимодействие с сервером (http или сокеты) и есть ли он вообще - что за объекты, относящиеся к другу пользователя. и так далее Хотя, вопросов у Вас много, поэтому лучше будет не код, а сценарий предполагаемого развития событий рассказать, например: - есть игра "крестики - нолики"; - внизу должны отображатся друзья; - уровень друзей приходит от нашего сервера по специальному запросу в виде списка айдишник друга - уровень; - внизу список друзей приложения (список получаю по запросу к вконтакте) должен быть отсортированн по уровню. А еще от вконтакта надо получить список профайлов, чтобы загрузить и х фотографии; - я понятия не имею как связать получение данных от вконтакта с данными от нашего сервера, да еще это отобразить всё, загружая фотографии; - при клике по другу, поле с крестиками-ноликами должно исчезнуть, а появится список достижений друга, а я не знаю как лучше организовать архитектуру, где сохранить текущее поле игрока ... Было бы проще. Последний раз редактировалось expl; 12.02.2012 в 21:08. |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 7
|
Спасибо. Надеюсь у нас с вами получится конструктивный диалог.
Ответы на многие эти вопросы у меня есть. Вообщем, дело обстоит так: Для отображения друзей я сначала обращаюсь к api var flashVars:Object = stage.loaderInfo.parameters as Object; var VK:APIConnection = new APIConnection(flashVars); VK.api("friends.getAppUsers", { uid: flashVars['viewer_id']}, loadFriends, PrintError); function loadFriends(response:Object):void{ VK.api("getProfiles", {uids:response[0], fields:"photo,first_name"}, success, fail); function success(response:Object):void { var photoRequest:URLRequest = new URLRequest(response[0]["photo"]); var firstName:String = response[0]["first_name"]; var sprite:Border = new Border(photoRequest, firstName); addChild(sprite); } } В него загружается фото и TextField с именем. Я могу перед тем как создать объект Border выполнить запрос к php скрипту на сервер в БД и получить оттуда текущий уровень друга, но может быть это будет очень долго выполняться. У меня проблема с тем, как рационально вывести сразу много друзей. Я сделал чтобы объект Sprite отвечал на клик. Подскажите, как умные люди по 6 друзей выводят и ещё кнопки для пролистывания есть. |
|
|||||
|
Border - это класс отображающий друга, а заодно загружающий фотографию? Тогда не понятно как вы координаты выставляете, чтобы все Border в одну точку не выставлялись.
Короче, как выглядит обкатанный мной метод создания списка друзей: Надо отделить отображение от данных. Будет проще. Гораздо. Как вообще реализуются списки с прокруткой на экране (не важно друзей, оружия в инвентаре или товаров в магазине): (учтите, что далее идет много конкретики выбранной на абум, просто чтобы не засорять эфир словами "возможно", "лучше было бы", "если", ...) - есть визуальный список, который можно прокручивать горизонтально с полями array, scrollH - в коде этого списка ничего не знают ни про друзей, ни про то как их надо отображать - в конструктор списка передается класс - "рендерер". Это штука, которая отображает конкретные данные, например друга, он обязательно реализует интерфейс: public interface IRenderer { function get view():DisplayObject; function get data():*; function set data(value:*):void; } В нем реализуется прокрутка (по изменению поля scrollH) и если потребуется другой горизонтальный список уже для товаров - его не придется писать заново. Теперь надо понять как сформировать собственно этот array данных (теперь они у нас не завязаны на отображение и сделать это проще) - Для начала подойдет самый тупой вариант с последовательным получением данных: - создаем класс типа: public class Friend { public var id:String; public var level:int; public var photoURL:String; } - для каждого айдишника создаем по экземпляру Friend, присваивая полю id этот айдишник и запоминая список экземпляров Friend в массиве; - загружаем профили по полученному списку айдишников - для каждого профиля по айдишнику находим экземпляр Friend (лучше не поиск использовать а через хеши - но это чисто для производительности, можно забить) и из профиля заполняем поле photoURL - по списку айдишников запрашиваем уровни с нашего сервера, находим друзей в нашем массиве и присваиваем эти уровни; - всё! массив данных готов - присваиваем его полю array и наблюдаем друзей внизу экрана - фотографии друзей можно грузить уже в самом Рендерере (у него же есть ссылка на Friend, которую ему передали в поле data, а у Friend есть адрес фотографии); - добавляем кнопки влево-вправо, которые делают list.scrollH++ и list.scrollH--. Последний раз редактировалось expl; 12.02.2012 в 22:15. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:30. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|