![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
public function addObject(clan:int, key:String, name:String, x:int, y:int, desc:String, onResult:Function = null):void { if (onResult != null) addObjectResult = onResult; if (addObjectResult != null) if (!service.getOperation('addObject').hasEventListener(ResultEvent.RESULT)) service.getOperation('addObject').addEventListener(ResultEvent.RESULT, addObjectResult); service.getOperation('addObject').send(clan, key, name, x, y, desc); } В нем так же присутствует публичная переменная addObjectResult. Этот кусок кода замечательно работает при первом вызове. Я передаю onResult, и этот метод благополучно вызывается по событию. Но при последующих вызовах этого не происходит. Условие if (!service.getOperation('addObject').hasEventListener(ResultEvent.RESULT)) выполняется, и, я полагаю, прослушивателем является функция, переданная в качестве параметра при предыдущем вызове (т.е. та же самая). Но, еще раз повторюсь, вызова ее не происходит. Вопрос? |
|
|||||
|
подпишите на получение результа service, для проверки
|
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Неа, тишина. Запрос проходит (данные в базе обновляются), а ответа нет.
ПС: еще стати вопрос не по теме (проше не заострять на него внимание). Каждый раз перед дебагом приходится делать клин библиотэки, это нормально? Добавлено через 10 минут Вот какой зверь выскакивает, хотя повторюсь, удаленный метод выполняется. Последний раз редактировалось Silicium; 21.08.2011 в 02:32. |
|
|||||
|
кстати документация говорит что каждый раз создается новый AbstractOperation
http://help.adobe.com/ru_RU/FlashPla...peration%28%29 может лучше один раз вызвать getOperation() ? от греха подальше Добавлено через 5 минут мне хорошо помог переход на HTTPService (XML), одно время тоже какие то глючки постоянно сыпались с RemoteObject Последний раз редактировалось ShockWave512; 21.08.2011 в 03:11. |
|
|||||
|
Не стоит проверять одну операцию, подписываться у второй и вызывать send у третьей.
public function addObject(clan:int, key:String, name:String, x:int, y:int, desc:String, onResult:Function = null):void { if (onResult != null) { var operation:AbstractOperation = service.getOperation('addObject'); operation.addEventListener(ResultEvent.RESULT, addObjectResult); operation.send(clan, key, name, x, y, desc); } }
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Всем спасибо большое.
Цитата:
Цитата:
Однако и Ваш, alatar, способ не поможет, так-как .getOperation будет все ровно вызываться каждый раз при вызове addObject. На последок скажу, что помагать-то уже и не зачем! Сегодня запустил - все работает без косяков :-/ *слов нет* Всем спасибо за участие, вопрос приподзакрыт. |
|
|||||
|
Цитата:
|
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Ночь была, тупил сильно. Не работал код, когда я менял прослушиватель. В переменную модуля записывалась новая ссылка на метод, а т-к у операции прослушиватель уже был, то он не заменялся. Все исправил заменой тела функции на вот это:
var operation:AbstractOperation = service.getOperation('addObject'); if (onResult != null) { if (addObjectResult != null) operation.removeEventListener(ResultEvent.RESULT, addObjectResult); addObjectResult = onResult; operation.addEventListener(ResultEvent.RESULT, addObjectResult); } operation.send(clan, key, params); |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|