![]() |
член класса (задаю значения)
вот есть такой код
Код AS3:
|
Если loader.data пуста, а Вы ожидаете там какой-то ответ, то воспользуйтесь любым HTTP-снифером, чтобы проверить что к вам приходит. Я пользую Flidder2
P.S. Wolf? У нас есть еще подобные свободные ники? Добавлено через 23 минуты Я немного обескуражен. Вы сказали, что Цитата:
Цитата:
Код AS3:
|
ответ присылает мне сервер в формате json. я его декодирую и полученый объект назаначаю переменной. в функции onComplete(событие) loader.data не пуста и this.resp надано значение. но за пределами этой функции это просто ссылки на NULL
|
Я испытал первую машину времени.
|
хах) просто сообщение модерировалось.
так почему так? я же члену класа надаю значение, а оно куда-то пропадает |
Хех. Я сам пытался возвратиться в прошлое. Я модератор.
Я думаю, что ключевое слово "надаю" обладает более сильным кунг-фу, чем я предполагал ранее. Переспрошу. Только здесь вы получаете null? Код AS3:
|
здесь я получаю нормальное значение.
Код AS3:
Код AS3:
|
Вот теперь я понял, что ничем не могу помочь.
|
[offtop]В принципе, с помощью машины времени реально унести запрос на несколько секунд в прошлое, чтобы к тому моменту когда плеер соберется его сделать, он уже был обработан сервером и плеер получил ответ.[/offtop]
Wolf, флэш не останавливается после каждой строчки, ожидая что ему надают. Если послали запрос, надо таки дождаться ответа – вот когда он придет, будет вызван обработчик onComplete и только "из него" можно продолжить работать с полученными данными. |
дело в том что обработчик onComplete вызывается. и теле этого обработчика я надаю члену класа значение. но когда обработчик законччит свою работу все даные пропадают.
как мне тогда решить эту проблему? мне надо отправить на сервер зарос. сервер обрабатывает даные и дает ответ в формате json а мне надо эти даные обработать, сохранить и передать класу Account который отвечает за информацию о аккаунте в игре. Код AS3:
Код AS3:
|
Никто никуда не пропадает. Вы спрашиваете эти данные тогда, когда их еще нет. Вы послали привет серверу и тут же, в следующей строчке кода, работаете с его "ответом", хотя он еще даже не получил Ваш запрос. Это понятно? Вы замечали, что интернет-страницы открываются не сразу же в тот момент как Вы нажали на ссылку?
|
можно тогда пример как это должно быть? я просто еще никогда не работал с клиент-серверными приложениями
Добавлено через 6 минут Код AS3:
|
ради интереса дождитесь появления stage
|
можно код примера?
|
Вам не нужен никакой код, Wolf. Вам нужно открыть книгу и читать главу про События в ActionScript 3.0.
Это настолько базовая вещь, что без нее практически ничего сделать на флэш невозможно. По крайней мере, интерактивного. И клиент-серверные приложения тут абсолютно не при чем. И пересказывать тут основы, описанные в книгах, нет никакого смысла – они уже описаны и разжеваны. Это форум, здесь рассматривается конкретика и здесь помогают найти ошибки. У Вас – не ошибка. У Вас непонимание основ. Лечится чтением хелпа и книжек. Читайте все про События и Событийную модель AS3. |
неужели так сложно помочь?
|
Цитата:
|
я прошу помочь как отреагировать на полную загрузку. тоесть что вызвать, после onComplete и как
Добавлено через 4 минуты и еще вопрос: у меня, например, есть какаято переменная в мейне. в конструторе мейна я обращаюсь к другому класу и методам. можно из этих других методов управлять переменными мейна? |
Вот это и есть ответ - "вызвать после onComplete". Вам надо перестроить мышление, чтобы думать не последовательным свитком кода в 10000 строк в одном единственном методе, а – блоками, которые реагируют на события. Программа больше похожа на паутину с пересекающимися связями, она модульная, блочная, состоит из коротких методов, обработчиков событий и вспомогательных функций вычисления. Если Вы, к примеру, хотите отобразить в приложении картинку юзера, то Вы посылаете запрос к апи с его айдишником. На этом месте код заканчивается – пока не придет ответ сервера, Вы ничего не можете сделать. Продолжение находится в другом блоке. Вы можете продолжить, когда придет ответ и будет вызван обработчик. В обработчике сохраняете данные и вызываете следующий метод - лоадАватар например, которому отдаете УРЛ картинки, полученный из ответа сервера. ЛоадАватар создает Лоадер и делает новый запрос - на загрузку уже картинки, и на этом он сам заканчивается. Продолжение - в онКомплитАватарЛоадинг. И так все. Все из блоков. Просто блоки эти надо учиться делать многофункциональными и повторно используемыми, то есть универсальными - загрузчик картинок надо придумать так, чтобы им можно было грузить любую картинку в любой момент, а не только конкретный аватар.
По второму вопросу – во-первых на форуме правило: одна тема - один вопрос. Во-вторых: опять же, читайте про ООП. Управление всегда ниспадающее, иначе получите полный хаос. Здесь масса обсуждений была уже этой темы. |
тоесть в конструкторе основного класа никак не получить загруженые даные?
Добавлено через 1 минуту мне тяжело перестроиться на флеш, так как привык к СИ++ где код выполняется построчно |
В конструкторе - никак. И непонятно, зачем.
|
ладно это я уже понял. но почему вот этот код вызывает ошибку?
Код AS3:
|
потому что еще нет ни стейдж ни соответственно его свойств. Инициализируйте, когда будет стейдж (Event.ADDED_TO_STAGE).
|
Цитата:
|
спасибо всем огромное)))
P.S. как у вас тут на форуме репутацию повысить? |
| Часовой пояс GMT +4, время: 23:38. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.