Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как вернуть переменную из функции? (http://www.flasher.ru/forum/showthread.php?t=117775)

RedLizard 06.11.2008 12:16

Как вернуть переменную из функции?
 
Есть вот такая функция, которая читает некоторые данные. Как сделать так, что бы она возвращала результат? В таком виде она возвращает null. Хотя внутри подфункции onDataLoad переменная существует. Вот как ее передать основной функции?

Код:

                private function GetUserInfo():String {
                        var user_ip:String;
                        var myLoader:URLLoader = new URLLoader();
                        myLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
                        var myRequest:URLRequest = new URLRequest("http://www.site.ru/get_user_info.php?rand="+String(Math.random()));
                        myRequest.method = "GET";
                        myLoader.load(myRequest);
                        myLoader.addEventListener(Event.COMPLETE, onDataLoad);
                        myLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
                        myLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
                        myLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus);   
       
                        function onDataLoad(evt:Event){
                                user_ip = evt.target.data["user_ip"];
                        }
                        function onIOError(evt:IOErrorEvent){
                                trace("IOError: "+evt.text)
                        }
                        function onHTTPStatus(evt:HTTPStatusEvent){
                                trace("HTTPStatus: "+evt.status)
                        }
                        function onSecurityError(evt:SecurityErrorEvent){
                                trace("SecurityError: "+evt.text)
                        }

                        return(user_ip);
                }


BlooDHounD 06.11.2008 12:26

вернуть никак.
передать ... да как угодно.
в момент когда происходит return, user_ip не существует.

etc 06.11.2008 12:31

ActionScript — асинхронен.

RedLizard 06.11.2008 12:40

Цитата:

Сообщение от BlooDHounD (Сообщение 775026)
вернуть никак.
передать ... да как угодно.
в момент когда происходит return, user_ip не существует.

Да, я уже понял что вернуть не получается :) А каким образом можно передать эту переменную наружу из функции? Можно небольшой пример?

Сейчас у меня снаружи прописана переменная var g_user_ip:string; вот как ей передать значение user_ip из функции?

Заранее спасибо.

BlooDHounD 06.11.2008 13:52

эээ ... сделать кастомное событие?

_Smirnoff 06.11.2008 14:29

Передай в GetUserInfo callBack функцию, и когда загрузится все, дерни эту фунцию и передай с ней параметр.

Код:

private var _callBack:Function;
private function GetUserInfo(callBack:Function):void
{
      _callBack = callBack;
}

function onLoaded(evt:Event)
{
        _callBack(evt.target.data["user_ip"]);
}


RedLizard 06.11.2008 18:56

Цитата:

Сообщение от _Smirnoff (Сообщение 775065)
Передай в GetUserInfo callBack функцию, и когда загрузится все, дерни эту фунцию и передай с ней параметр.
[

Спасибо, примерно так и сделал.


Часовой пояс GMT +4, время: 16:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.