Получение информации о пользователе
Добавлено: 16 июл 2011, 22:36
Здравствуйте, возникла проблемка с информацией о пользователе. Делал уже по выложенному коду, но дописав маленькое изменение, на которое флэш начал ругаться. Опишу свой порядок действия:
1) Создал кнопку с текстом на кнопке и сохранил в fla.
2) Создал фоновую картинку и сохранил в fla.
3) Далее создаю проект AS3 через ctrl + c и ctrl + v вставляю кнопку и фоновую картинку и размещаю на белом фоне.
4) Захожу в properties кнопки и в свойствах пишу "profile_btn"
5)Жму f9 открывается окно "действия - кадр" и вставляю туда код:
- в этой строчке я хочу, чтобы информация выдавалась после нажатия на кнопку profile_btn.
Компилирую ctrl+enter и получаю 3 ошибки:
Но запуская его, получаю фон и кнопку ( уже без названия, которое было написано до компиляции) и все. Жму на кнопку и ничего не происходит.
Я понимаю, что такое уже много раз обсуждалось...Я просто только начал и очень хочу разобраться..Помогите пожалуйста
1) Создал кнопку с текстом на кнопке и сохранил в fla.
2) Создал фоновую картинку и сохранил в fla.
3) Далее создаю проект AS3 через ctrl + c и ctrl + v вставляю кнопку и фоновую картинку и размещаю на белом фоне.
4) Захожу в properties кнопки и в свойствах пишу "profile_btn"
5)Жму f9 открывается окно "действия - кадр" и вставляю туда код:
Код: Выделить всё
var api_id:Number = 2414434 ;// ID приложенияvar url_loader:URLLoader;var url_request:URLRequest;var viewer_id;var secret:String;var sid:String;var api_url:String; var bdate_tf:TextField = new TextField();var name_tf:TextField = new TextField();var avatar:UILoader = new UILoader ; // получаем данные из flashVars// id просматривающего приложениеviewer_id = LoaderInfo(root.loaderInfo).parameters.viewer_id;// secret для генерации сигнатурыsecret = LoaderInfo(root.loaderInfo).parameters.secret;// id сессииsid = LoaderInfo(root.loaderInfo).parameters.sid;// адрес API-сервисаapi_url = LoaderInfo(root.loaderInfo).parameters.api_url; // для тестирования локально, можно прописать их здесь (брать в исходном коде страницы с приложением)/* viewer_id = '1'; secret = 'abcd123456'; sid = 'abcd123456abcd123456abcd123456abcd123456abcd123456abcd1234'; api_url = 'http://api.vkontakte.ru/api.php'; */// вызываем функцию получения профиля пользователя, просматривающего приложениеprofile_btn.addEventListener(MouseEvent.CLICK,getProfile(viewer_id)); function getProfile(uid):void{ // параметры которые будем передавать в запросе и которые нужны для формирования сигнатуры // параметры для формирования сигнатуры var request_params: Object = new Object(); request_params.api_id = api_id; request_params.method = 'getProfiles'; request_params.format = 'XML'; request_params.v = '3.0'; request_params.fields = 'bdate,photo_big'; request_params.uids = uid; // параметры для отправки запроса 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);} // запрос выполненfunction onComplete(event:Event):void{ var response:XML = new XML(url_loader.data); // выводим дату рождения пользователя var bdate = response..bdate; bdate_tf.text = bdate; bdate_tf.x = 490; bdate_tf.y = 380; addChild(bdate_tf); // выводим имя и фамилию пользователя name_tf.text = response..first_name + ' ' + response..last_name; name_tf.x = 410; name_tf.y = 360; addChild(name_tf); // выводим аватарку пользователя avatar.autoLoad = true; avatar.scaleContent = false; avatar.source = response..photo_big; avatar.move(175,10); addChild(avatar);} // функция генерации сигнатурыfunction generate_signature(request_params):String{ var signature = ''; // сортируем параметры в алфавитном порядке var sorted_array: Array = new Array(); for (var key in request_params) { sorted_array.push(key + "=" + request_params[key]); } sorted_array.sort(); // создаем строку параметров; for (key in sorted_array) { signature += sorted_array[key]; } signature = viewer_id + signature + secret; return MD5.encrypt(signature);} Код: Выделить всё
profile_btn.addEventListener(MouseEvent.CLICK,getProfile(viewer_id));Компилирую ctrl+enter и получаю 3 ошибки:
Но тем немее програмка компилиться.Получившийся swf заливаю в вк с соответсвенно настройками "без контейнера" и "приложение включено"строка 11 1046: Тип не найден или не является константой времени компиляции: UILoader.
строка 11 1180: Вызов предположительно неопределенного метода UILoader.
строка 31 1067: Неявное приведение значения типа void к несоответствующему типу Function.
Но запуская его, получаю фон и кнопку ( уже без названия, которое было написано до компиляции) и все. Жму на кнопку и ничего не происходит.
Я понимаю, что такое уже много раз обсуждалось...Я просто только начал и очень хочу разобраться..Помогите пожалуйста