Как получить переменную из функции в as3 без использования метода get, set? - PullRequest
0 голосов
/ 05 ноября 2011

Hai У меня проблемы с получением значений из функции (addText) .i Вызывается из другой функции onFullScreen (). Я не знаю, как я могу это сделать, пожалуйста, помогите мне? Здесь я прилагаю свой код

private function addText()
    {


        nc = new NetConnection();
        nc.addEventListener(NetStatusEvent.NET_STATUS, ncOnStatus);



        function ncOnStatus(infoObject:NetStatusEvent)
        {
            trace("nc: "+infoObject.info.code+" ("+infoObject.info.description+")");

            if (infoObject.info.code == "NetConnection.Connect.Success")
            {
                initSharedObject(chatSharedObjectName);
            }


        }
        function formatMessage(chatData:Object)
        {

            trace("room"+chatData.message);
            number = chatData.txtalign;//i want to retrive the value of number
            number.toString();
            return number;


        }
        function syncEventHandler(ev:SyncEvent)
        {
            var infoObj:Object = ev.changeList;

            // if first time only show last 4 messages in the list
            if (lastChatId == 0)
            {
                lastChatId = Number(textchat_so.data["lastChatId"]) - 1;
                if (lastChatId < 0)
                    lastChatId = 0;
            }

        }

        function connectSharedObject(soName:String)
        {


            textchat_so = SharedObject.getRemote(soName, nc.uri)

            // add new message to the chat box as they come in
            textchat_so.addEventListener(SyncEvent.SYNC, syncEventHandler)

            textchat_so.connect(nc) 


        }


        function connectSharedObjectRes(soName:String)
        {

            connectSharedObject(soName)
            trace(soName)
        }

        function initSharedObject(soName:String)
        {
            // initialize the shared object server side
            nc.call("initSharedObject", new Responder(connectSharedObjectRes), soName)


        }
                    }

Я использую переменную в другой функции, но не могу получить значение.

    private function onFullScreen(event:FullScreenEvent):void
    {
                       mediaContainer.addMediaElement(alert);
            alert.alert("Error",number);// if i cannot retrive the value  hnumber here
             }

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Метод addText () является асинхронным, это означает, что вы не можете просто вызвать его, вам нужно подождать, пока прослушиватель событий вернет значение.

Я не уверен, почему вы чувствуете, чтоНужно вложить все эти функции, это не очень разборчиво и я сомневаюсь, что это необходимо.Вам также не хватает нескольких точек с запятой ...

В любом случае, я не мог видеть, где был вызван метод formatMessage (), похоже, это единственное место, куда попадает переменная "число"определены.

0 голосов
/ 05 ноября 2011

Вы можете создать переменную вне области функций.

private var num:int;

Затем в вашей функции addText присвойте значение переменной:

num = infoObject.info.code;

Затем в вашем onFullScreenфункция, доступ к переменной num:

 alert.alert("Error", num);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...