Вывод в текстовое поле

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
herotic
Сообщения: 33
Зарегистрирован: 25 май 2010, 23:36

Вывод в текстовое поле

Сообщение herotic »

Приветствую всех!
Наткнулся недавно на замечательный пример вывода информации о пользователе:

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

  package {    import flash.net.URLLoader;    import flash.net.URLRequest;    import flash.display.*;    import flash.events.*;    import flash.text.*;     public class Main extends Sprite {        private var api_id:Number=743131; // id вашего приложения        private var api_secret:String="sE4VLBDdSQ"; // секретный ключ        private var externalXML:XML;        private var loader:URLLoader = new URLLoader();        private var photoLoader:Loader = new Loader();        private var viewer_id:Number;        private var sig:String;        private var uid:String;        private var bdate_txt:TextField = new TextField();        private var name_txt:TextField = new TextField();         public function Main():void {            var params:Object=LoaderInfo(root.loaderInfo).parameters;            viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;            getProfile(viewer_id);        }         private function getProfile(uid):void {            sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=uid,bdate,photo_bigmethod=getProfilesuids='+uid+'v=2.0'+api_secret);            var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=uid,bdate,photo_big&v=2.0&sig="+sig);            loader.load(request);            loader.addEventListener(Event.COMPLETE, onComplete);        }         private function onComplete(event:Event):void {            bdate_txt.text='';            if (loader!=null) {                externalXML=new XML(loader.data);                var bdate = externalXML..bdate;                bdate_txt.text=bdate;                bdate_txt.x=490;                bdate_txt.y=380;                addChild(bdate_txt);                                var uname = externalXML..first_name + ' ' + externalXML..last_name;                name_txt.text=uname;                name_txt.x=410;                name_txt.y=360;                addChild(name_txt);                                var usidi = externalXML..uid;                userid.text='usidi';                addChild(userid);                                var photo = externalXML..photo_big;                var request2:URLRequest=new URLRequest(photo);                photoLoader.load(request2);                photoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);             } else {                trace("Error!");            }        }         private function onLoaded(e:Event):void {            photoLoader.x = (550-photoLoader.width)/2;            photoLoader.y = (400-photoLoader.height)/2;            addChild(photoLoader);        }     }}  
Все отлично работает, НО, когда я пытаюсь вывести переменную имени или любую другую в созданное мною динамическое текстовое поле во флешке, флешка перестает работать и выводить информацию. Как только я это поле удаляю, сразу все работает.
Скажите пожалуйста, как сделать так, чтобы я мог выводить требуемые мне переменные в текстовое поле созданное не программно?
Аватара пользователя
Doker
Модератор
Модератор
Сообщения: 1026
Зарегистрирован: 07 май 2010, 18:53

Re: Вывод в текстовое поле

Сообщение Doker »

Создай динамическое поле name_tf.
потом замени

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

var uname = externalXML..first_name + ' ' + externalXML..last_name;                name_txt.text=uname;                name_txt.x=410;                name_txt.y=360;                addChild(name_txt); 

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

var uname = externalXML..first_name + ' ' + externalXML..last_name;                name_txt.text=uname;    name_tf.text=name_txt.text; 
herotic
Сообщения: 33
Зарегистрирован: 25 май 2010, 23:36

Re: Вывод в текстовое поле

Сообщение herotic »

Не работает (
Аватара пользователя
Doker
Модератор
Модератор
Сообщения: 1026
Зарегистрирован: 07 май 2010, 18:53

Re: Вывод в текстовое поле

Сообщение Doker »

http://rapidshare.com/files/391718736/source.rar.html
или Зеркало

вот исходник, с 2 текстовыми полями
herotic
Сообщения: 33
Зарегистрирован: 25 май 2010, 23:36

Re: Вывод в текстовое поле

Сообщение herotic »

Спасибо. Все делаю точно также как в инструкции, но все-равно не хочет выводить в текстовые поля информацию :shock:
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Вывод в текстовое поле

Сообщение Александр »

herotic
не понятно что ты хотел сделать вот этим:

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

                 var usidi = externalXML..uid;                userid.text='usidi';                addChild(userid);
Если ты создал текстовое поле на сцене, то делать addChild - не нужно.
userid.text='usidi'; - поместит в текстовое поле текст "usidi". Для вывода значения переменной кавычки не нужны.
herotic
Сообщения: 33
Зарегистрирован: 25 май 2010, 23:36

Re: Вывод в текстовое поле

Сообщение herotic »

Тем примером я просто проверял работает ли вообще вывод чего либо с текстовое поле.

Тема все еще актуальна, помогите пожалуйста, как сделать вывод, выводит просто пустое, иногда пробелы.
moto
Сообщения: 122
Зарегистрирован: 05 апр 2010, 23:08

Re: Вывод в текстовое поле

Сообщение moto »

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

  package {    import flash.net.URLLoader;    import flash.net.URLRequest;    import flash.display.*;    import flash.events.*;    import flash.text.*;     public class Main extends Sprite {        private var api_id:Number=743131; // id вашего приложения        private var api_secret:String="sE4VLBDdSQ"; // секретный ключ        private var externalXML:XML;        private var loader:URLLoader = new URLLoader();        private var photoLoader:Loader = new Loader();        private var viewer_id:Number;        private var sig:String;        private var uid:String;        private var bdate_txt:TextField = new TextField();          public function Main():void {            var params:Object=LoaderInfo(root.loaderInfo).parameters;            viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;            getProfile(viewer_id);        }         private function getProfile(uid):void {            sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=uid,bdate,photo_bigmethod=getProfilesuids='+uid+'v=2.0'+api_secret);            var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=uid,bdate,photo_big&v=2.0&sig="+sig);            loader.load(request);            loader.addEventListener(Event.COMPLETE, onComplete);        }         private function onComplete(event:Event):void {            bdate_txt.text='';            if (loader!=null) {                externalXML=new XML(loader.data);                var bdate = externalXML..bdate;                bdate_txt.text=bdate;                bdate_txt.x=490;                bdate_txt.y=380;                addChild(bdate_txt);                               var uname = externalXML..first_name + ' ' + externalXML..last_name;                name_txt.text=uname;                                var usidi = externalXML..uid;                userid.text='usidi';                addChild(userid);                               var photo = externalXML..photo_big;                var request2:URLRequest=new URLRequest(photo);                photoLoader.load(request2);                photoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);             } else {                trace("Error!");            }        }         private function onLoaded(e:Event):void {            photoLoader.x = (550-photoLoader.width)/2;            photoLoader.y = (400-photoLoader.height)/2;            addChild(photoLoader);        }     }}  
из этого кода я убрал

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

                name_txt.x=410;                name_txt.y=360;                addChild(name_txt);
и эту строку

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

        private var name_txt:TextField = new TextField();
а теперь создай сохрани этот как Main.as
затем присоедини к какому-нить fla-файлу , as3 разумеется.
в этом fla файле создай динамическое текстовое поле с названием name_txt
скомпилируй
выгрузи в контакт

должно вывести имя пользователя в том месте, где ты создал динамическое текстовое поле.
остальные поля создадутся программно, так как мы с ними ничего не делали...
и остальные поля по желанию - можешь сделать точно также...
herotic
Сообщения: 33
Зарегистрирован: 25 май 2010, 23:36

Re: Вывод в текстовое поле

Сообщение herotic »

Все заработало! Спасибо большое всем за помощь! Оказалось нужно просто включить приложение ))
Ответить