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

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

Добавлено: 25 май 2010, 23:40
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);        }     }}  
Все отлично работает, НО, когда я пытаюсь вывести переменную имени или любую другую в созданное мною динамическое текстовое поле во флешке, флешка перестает работать и выводить информацию. Как только я это поле удаляю, сразу все работает.
Скажите пожалуйста, как сделать так, чтобы я мог выводить требуемые мне переменные в текстовое поле созданное не программно?

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

Добавлено: 26 май 2010, 11:17
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; 

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

Добавлено: 26 май 2010, 13:59
herotic
Не работает (

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

Добавлено: 26 май 2010, 14:31
Doker
http://rapidshare.com/files/391718736/source.rar.html
или Зеркало

вот исходник, с 2 текстовыми полями

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

Добавлено: 27 май 2010, 00:35
herotic
Спасибо. Все делаю точно также как в инструкции, но все-равно не хочет выводить в текстовые поля информацию :shock:

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

Добавлено: 27 май 2010, 18:52
Александр
herotic
не понятно что ты хотел сделать вот этим:

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

                 var usidi = externalXML..uid;                userid.text='usidi';                addChild(userid);
Если ты создал текстовое поле на сцене, то делать addChild - не нужно.
userid.text='usidi'; - поместит в текстовое поле текст "usidi". Для вывода значения переменной кавычки не нужны.

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

Добавлено: 27 май 2010, 20:46
herotic
Тем примером я просто проверял работает ли вообще вывод чего либо с текстовое поле.

Тема все еще актуальна, помогите пожалуйста, как сделать вывод, выводит просто пустое, иногда пробелы.

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

Добавлено: 27 май 2010, 22:17
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
скомпилируй
выгрузи в контакт

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

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

Добавлено: 27 май 2010, 23:43
herotic
Все заработало! Спасибо большое всем за помощь! Оказалось нужно просто включить приложение ))