Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Получение значения из addEventListener (http://www.flasher.ru/forum/showthread.php?t=134010)

Vilya21 18.12.2009 18:40

Получение значения из addEventListener
 
К примеру надо передать переменную strIn и получить strOut.

Код AS3:

myLoader.addEventListener(Event.COMPLETE, myLoader_complete); 
function myLoader_complete( event:Event, strIn:String ): String {
  ...
  return strOut;
}

Куда правильно вставить strIn и strOut в этот код?

udaaff 18.12.2009 18:49

Обработчик не должен возвращать никаких значений.

Vilya21 18.12.2009 18:55

А как тогда сделать возвращение значения из функции загрузки xml-файла?
К примеру Class1 вызывает функцию loadXML из Class2. Мне надо присвоить надписи кнопкам в классе Class1 из данных XML. Неужели данные придётся передавать через глобальные переменные?

Wolsh 18.12.2009 19:13

А КОГДА Вы собираетесь присваивать кнопкам надписи? Надеюсь, ПОСЛЕ того, как XMLка загрузится? Вот этим и должен заниматься обработчик. Разбор XML должен быть либо в коде самого обработчика, либо в другой функции, вызываемой из обработчика, возможно с передачей ей XML как параметра вызова, если не хотите хранить данные в приватной переменной.

Himerets 18.12.2009 19:19

Лисенер значение не вернет
Можно сделать обработчик в Class1 на class2.loader и в нем установить заголовки кнопок.
Можно в обработчике в Class2 сделать нечто подобное:
Код AS3:

(parent as Class1).setButtonCaption(captionFromXML)

Немного через задницу, конечно, но по-моему лучше, чем через глобальные переменные класса Class2

Vilya21 18.12.2009 19:46

Обработчик вызывается из функции загрузки ХМЛ, конечно же после.
Обработчик находится в том же классе что и загрузчик.
Но мне надо передать значение в главный класс, из которого вызывается загрузчик. А из загрузчика вызывается обработчик.
Порядок вызова ф-ий таков:
"Главный класс" => "ф-ия загрузчик" => "ф-ия обработчик"
Т.е. в обратном порядке надо получить значения.
В загрузчик передаю аргумент просто: строка = функция(аргумент).
А как получить значение, если функция является обработчиком события?

Wolsh 18.12.2009 20:19

1. Подписать "главный класс" на событие.
2. Если не нужен никак обработчик в главном, то делать разбор в Вашем обработчике и по окончании в нем же диспатчить еще одно событие, ну скажем "parse_complete", на которое подписать "главный класс". Но тогда придется либо написать свое событие, содержащее данные, которые надо передать, либо придется таки завести переменную во втором классе, откуда главный сможет забрать данные, когда они будут готовы. Все просто)))

Vilya21 19.12.2009 02:24

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


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

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