Re: Получение информации о пользователе
Добавлено: 17 июл 2011, 20:00
Спасибо, ссылка оказалось очень нужной!
Прочитал урок про взаимодействие создание базы пользователей приложения и ведение статистики посещений и решил пойти дальше:
Создал еще одну кнопку назвал ее create_btn. При ее нажатии должны появиться поля , введя туда значения они должны сохраниться в базе данных.
Все это находится в одном кадре.Поэтому нажимая на кнопку create_btn у меня в приложении в самом верхнем углу появляется надпись label и больше ничего не происходит. Нажимая на кнопку profile_btn , загружается профиль, но если нажать потом на кнопку create_btn то поверх той информации возникнет "Имя: " "Дата ДД.ММ.ГГГГ" "Создать" но почему то без полей, куда вводить текст и без самой кнопки..
Сообственно два вопроса:
1) Почему при нажатии первой кнопки create_btn ничего не происходит т.е не появляется окно вбивания информации ?
2) Почему не отображаются поля TextInput и кнопка созданная методом Button ?
Прочитал урок про взаимодействие создание базы пользователей приложения и ведение статистики посещений и решил пойти дальше:
Создал еще одну кнопку назвал ее create_btn. При ее нажатии должны появиться поля , введя туда значения они должны сохраниться в базе данных.
Код: Выделить всё
/*подключение библиотек*/import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.URLRequestMethod; import flash.display.*; import flash.events.*; import flash.text.TextField; import fl.containers.UILoader; import flash.display.SimpleButton; import flash.display.BitmapData; import vk.APIConnection; import vk.events.*; import vk.ui.VKButton; import fl.controls.Button; import fl.controls.TextArea; import fl.controls.DataGrid; import fl.controls.ScrollPolicy; import fl.data.DataProvider; import fl.events.ListEvent; import fl.controls.TextInput; import fl.controls.Label; import flash.display.MovieClip; import flash.text.TextFormat; /* объявляем глобальные переменные*/ var api_id:Number = 2415040 ;// 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 result_tf: TextField = new TextField();// поле для отображения информацииvar avatar:UILoader = new UILoader() ;var auth_key; var namep:TextInput = new TextInput(); //поле для ввода имениvar date_c: TextInput = new TextInput(); // поле для ввода датыvar output : TextArea = new TextArea(); // многострочное текстовое поле с границей и возможностью отображения полос прокруткиvar label_namep: Label = new Label();// отображает одну или несколько строк текста с заданным выравниванием и размеромvar label_date_c: Label = new Label();var createbutton:Button = new Button(); // создаем кнопку //stage - получение напрямую// id просматривающего приложениеviewer_id = stage.loaderInfo.parameters.viewer_id;// secret для генерации сигнатурыsecret = stage.loaderInfo.parameters.secret; // id сессииsid = stage.loaderInfo.parameters.sid;// адрес API-сервисаapi_url = stage.loaderInfo.parameters.api_url;// для тестирования локально, можно прописать их здесь (брать в исходном коде страницы с приложением)/* viewer_id = '1'; secret = 'NCWvtyB1GV8cz4h54Y9Z'; sid = 'abcd123456abcd123456abcd123456abcd123456abcd123456abcd1234'; api_url = 'http://api.vkontakte.ru/api.php'; */ // вызываем функцию получения профиля пользователя, просматривающего приложениеprofile_btn.addEventListener(MouseEvent.CLICK,getProfile); // событие для кнопки profile_btn function getProfile(e:MouseEvent):void{ trace(viewer_id); // параметры которые будем передавать в запросе и которые нужны для формирования сигнатуры // параметры для формирования сигнатуры 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 = 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);} function news(e:MouseEvent):void{ namep.enabled = true; date_c.enabled = true; addChild ( namep); addChild ( label_namep); addChild ( date_c); addChild ( label_date_c); addChild(createbutton) createbutton.addEventListener(MouseEvent.CLICK,create_complete); }// запрос выполнен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); // создаем аватар /*result_tf.text=stat_loader.data; result_tf.x = 100; result_tf.y = 30; addChild(result_tf);*/ label_namep.move(220,125); label_namep.text = " Имя:"; label_namep.setSize(500,20); namep.move(220,145); namep.setSize(200,20); namep.maxChars = 25; label_date_c.move(220,205); label_date_c.text = "Дата ДД.ММ.ГГГГ:"; label_date_c.setSize(500,20); date_c.move(220,225); date_c.setSize(200,20); date_c.restrict=".0-9"; date_c.maxChars = 10; createbutton.move(420,245); createbutton.label="Создать"; } // функция генерации сигнатуры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);} create_btn.addEventListener(MouseEvent.CLICK,news); function create_complete ( e:Event):void{ //Создаем экземпляр класса URLLoader и экземпляр URLRequest класса var stat_loader:URLLoader = new URLLoader(); var stat_request:URLRequest=new URLRequest("http://адрес сайта/news.php");// задаем ссылку на отправку //выбираем способ отправки stat_request.method=URLRequestMethod.POST; // добавление параметров в запрос ( создаем переменные для отправки) var stat_vars:URLVariables = new URLVariables(); stat_vars['auth_key']=auth_key; //LoaderInfo(root.loaderInfo).parameters.auth_key;// auth_key из FlashVars stat_vars['viewer_id']=viewer_id; // ID просматривающего приложение stat_vars['pname']=namep.text; stat_vars['date']=date_c.text; namep.enabled=false; date_c.enabled=false; //Потом задаем эти переменные в экземпляр класса URLRequest stat_request.data=stat_vars; createbutton.removeEventListener(MouseEvent.CLICK,create_complete); // добавляем слушатель события Event.COMPLETE stat_loader.addEventListener(Event.COMPLETE,onLoaded2); //Загружаем экземпляром класса URLLoader все данные, указанные в URLRequest на адрес php скрипта, указанном выше stat_loader.load(stat_request); } function onLoaded2(e:Event):void { // удаляем слушатель e.target.removeEventListener(Event.COMPLETE,onLoaded2); //e.target - это объект, на который мы повесили слушатель output.text=e.target.data; } Сообственно два вопроса:
1) Почему при нажатии первой кнопки create_btn ничего не происходит т.е не появляется окно вбивания информации ?
2) Почему не отображаются поля TextInput и кнопка созданная методом Button ?