Страница 1 из 2

методы getCountries/getCities

Добавлено: 25 июл 2011, 19:40
dr1emaver
Здравствуйте, появились вопросы по методам getCountries/getCities. Читал мануал по вконтакте API по методу getProfile , там в качестве полей можно указывать city и country, но он выдаст их id. Мне он выдавал по единичке ( правильно это или нет не знаю).Но надо чтобы выводилось именно название города/страны - для этого я так понимаю и существуют getCountries/getCities. Но как ими пользоваться также как и getProfile?

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

 public function Main():void         {            VK.api('getProfiles',{ uids: viewer_id,fields:'photo_big,bdate,city,country,education' },onComplete, onError);            //uenter();            VK.api('getCountries',{uids:viewer_id,fields:'country'},onComplete,onError);        } private function getCountry(viewer_id):void        {            trace(viewer_id);            // параметры которые будем передавать в запросе и которые нужны для формирования сигнатуры            // параметры для формирования сигнатуры            var request_params: Object = new Object();            request_params.api_id = api_id;            request_params.method = 'getCountries';            request_params.format = 'XML';            request_params.v = '3.0';            request_params.fields = 'country';            request_params.uids = viewer_id;             // параметры для отправки запроса            var variables:URLVariables = new URLVariables();            // часть параметров берем из request_params            for (var j:String in request_params)            {                variables[j] = request_params[j];            }            variables['sid'] = sid;// параметр sid нужно передавать в запросе, но он не используются при создании сигнатуры            variables['sig'] = generate_signature(request_params);// генерируем сигнатуру. Функция generate_signature описана ниже.             // подготавливаем запрос            url_request = new URLRequest(api_url);            // данные будем отправлять POST запросом            url_request.method = URLRequestMethod.POST;            // добавляем параметры в запрос            url_request.data = variables;            // отправляем запрос            url_loader = new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,onComplete);            url_loader.load(url_request);        } private function onComplete(data: Object):void        {            var country =  data[0]['country'];            country_tf.text = country;            country_tf.x = 50;            country_tf.y = 100;            scene.addChild(country_tf);        }  
Вот таким образом? Но пишет ошибку Invalid country id


И второй вопрос.Есть текстовое поле TextField. И в нем есть функция автоматического подбора по содержимому.Не подскажите как она выглядит и как ее правильно написать. Например поле называется new

Re: методы getCountries/getCities

Добавлено: 25 июл 2011, 21:29
Александр

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

            VK.api('getProfiles',{ uids: viewer_id,fields:'photo_big,bdate,city,country,education' },onComplete, onError);            //uenter();            VK.api('getCountries',{uids:viewer_id,fields:'country'},onComplete,onError);
Прекращай вызывать по несколько методов подряд. Используй события.

Читай документацию по методам. http://vkontakte.ru/developers.php?o=-1 ... E%E2%20API
Что за метод getCountries? Где взял?
Есть метод places.getCountryById. Но uids:viewer_id,fields:'country' - там никаких нет. Только параметр cids.

Re: методы getCountries/getCities

Добавлено: 26 июл 2011, 10:40
dr1emaver
Александр писал(а):

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

            VK.api('getProfiles',{ uids: viewer_id,fields:'photo_big,bdate,city,country,education' },onComplete, onError);            //uenter();            VK.api('getCountries',{uids:viewer_id,fields:'country'},onComplete,onError);
Прекращай вызывать по несколько методов подряд. Используй события.

Читай документацию по методам. http://vkontakte.ru/developers.php?o=-1 ... E%E2%20API
Что за метод getCountries? Где взял?
Есть метод places.getCountryById. Но uids:viewer_id,fields:'country' - там никаких нет. Только параметр cids.
http://vkontakte.ru/developers.php?o=-1&p=getCountries - getCountries... Не понимаю, как вывести название страны - выводит только единичку...

Как события использовать ? мне не нужно, чтобы оно вызывалось после нажатия на кнопку, надо, чтобы сразу как включилось приложение оно вывело название страны..

Re: методы getCountries/getCities

Добавлено: 26 июл 2011, 11:02
dr1emaver
Есть конечно плохой вариант вывода - вручную.

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

 var country =  data[0]['country'];            if (country == 1) {                countr = "Russia";            }else{                countr = "undefined";            }//вывод переменной countr 
Но он не подходит, ведь так придется каждый код страны и города записывать..

Re: методы getCountries/getCities

Добавлено: 26 июл 2011, 11:31
bodnar

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

trace(data);

Re: методы getCountries/getCities

Добавлено: 26 июл 2011, 20:17
Александр
dr1emaver писал(а):Как события использовать ?
В книгах по AS написано...

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

            // ...            // инициализация            VK = new APIConnection(flashVars);            // выполняем запрос getProfiles            VK.api('getProfiles', { uids: flashVars['viewer_id'],fields:'photo_big,bdate,city,country,education' }, onProfileLoaded, onError);        }         // данные получены (getProfiles)        private function onProfileLoaded(data: Object):void        {            // обрабатываем полученный ответ            result_tf.text = data[0]['uid'] + ' ' + data[0]['first_name'] + ' ' + data[0]['last_name'] + "\n";            // только теперь вызываем другой метод. Тем более он требует данных, полученных от результата метода getProfiles            VK.api('places.getCountryById', { cids: data[0]['country'] }, onCountryLoaded, onError);        }                        // данные получены (places.getCountryById)        private function onCountryLoaded(data: Object):void        {            // обрабатываем полученный ответ            result_tf.appendText(data[0]['cid'] + ' ' + data[0]['name']);        }                                // если произошла ошибка        private function onError(data: Object):void        {            result_tf.text = data.error_msg;        }

Re: методы getCountries/getCities

Добавлено: 26 июл 2011, 20:49
dr1emaver
Спасибо!!!И еще вопросик..У TextField есть параметр autoSize - "Управляет автоматической настройкой размеров и выравниванием текстовых полей." Как правильно написать его, а то читаю мануал на сайте адобе, а там не примеров ничего.. Например создаем поле

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

var name : TextField = new TextField();
как для этого поля сделать ?
Вот сылка на описание.
http://help.adobe.com/ru_RU/FlashPlatfo ... er_air=2.6

Там есть строчки :
Допустимые значения констант TextFieldAutoSize: TextFieldAutoSize.NONE (по умолчанию), TextFieldAutoSize.LEFT, TextFieldAutoSize.RIGHT и TextFieldAutoSize.CENTER.

Re: методы getCountries/getCities

Добавлено: 26 июл 2011, 20:58
Александр
dr1emaver
Есть там пример. Просто ты не можешь из него вытащить, потому что видимо не понимаешь что такое функции...

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

name_tf.autoSize=TextFieldAutoSize.LEFT
И называй переменные обдуманно. Например name_tf.
_tf - в этом случае означает textfield. Если Мувиклип, то добавляй _mc и т.п. Чтобы понимать что это за переменная. Ну и в целом следи за именами переменных.

Кстати, весь тот код по получению пользователя и страны и города словом, можно сделать всего через одно обращение к API. Почитай про метод execute.

Re: методы getCountries/getCities

Добавлено: 27 июл 2011, 10:50
dr1emaver
Сделал так, но он выдает ошибку - 1120: Обращение несуществующего свойства VK.

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

   private function onProfileLoaded(data: Object):void        {            // обрабатываем полученный ответ            result_tf.text = data[0]['uid'] + ' ' + data[0]['first_name'] + ' ' + data[0]['last_name'] + "\n";            // только теперь вызываем другой метод. Тем более он требует данных, полученных от результата метода getProfiles            VK.api('places.getCountryById', { cids: data[0]['country'] }, onCountryLoaded, onError);        }
ругается на строчку :

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

     VK.api('places.getCountryById', { cids: data[0]['country'] }, onCountryLoaded, onError);
Я так понял что это связано с подключением библиотек , но они вроде подключены и лежат в папке vk, которая находится в папке с приложением.
вот какие подключены вконтактовские библиотеки :

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

import vk.APIConnection;    import vk.events.*;    import vk.ui.VKButton;
Соотвественно в папке vk находятся:
APIConnection.as и папки : ui,api,events..

Re: методы getCountries/getCities

Добавлено: 27 июл 2011, 20:24
Александр
dr1emaver
Переменная VK глобальная?