Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.08.2007, 05:00
Stop Black PR! вне форума Посмотреть профиль Отправить личное сообщение для Stop Black PR! Посетить домашнюю страницу Stop Black PR! Найти все сообщения от Stop Black PR!
  № 1  
Ответить с цитированием
Stop Black PR!
 
Аватар для Stop Black PR!

Регистрация: Aug 2003
Адрес: Moscow
Сообщений: 113
Отправить сообщение для Stop Black PR! с помощью ICQ
По умолчанию Отлов событий от RelayResponder в AS2

Имеется вот такой код, вызывающий функцию методом Flash Remoting
По нажатию на кнопку инициализируется сервис, в качестве объекта, отлавливающий события используется текущий (точнее родитель для кнопки), а функции удачного и неудачного вызова расположены непосредственно в текущем объекте.

Во временной шкале это всё работает. Если переместить в класс, то есть в AS2, то работать напрочь отказывается. Точнее, сервис стартует, возвращает нужное число и это видно с помощью дебагера, а сами функции не вызываются. Все варианты расположения этих функций уже перепробовал и с различными объектами вместо "this._parent" проверял.
Самый тупой способ: назначить объектом _root и поместить туда эти функции не работает. Функции не вызываются. Аналогичную проблему описали здесь http://www.flash-db.com/Board/index.php?topic=11206.0 и ответ найти не удалось.

Возможно кто то наблюдал подобное в другом контексте, когда не находился объект "отлавливающий" события. Поделитесь опытом, как это решать.

Код:
function getNewId(msg: ResultEvent){
	mx.remoting.debug.NetDebug.trace({level:"Debug", message:"onEchoData" });
	playerId = Number(msg.result);
	show.text = msg.result
	
}
function onEchoFault(rs: FaultEvent ){
	mx.remoting.debug.NetDebug.trace({level:"None", message:"There was a problem: " + fault.fault.faultstring });
}

newPlayer.onPress = function(){
   var pc:PendingCall = myService.newPlayerAMF();
   pc.responder = new RelayResponder(this._parent, "getNewId", "onEchoFault" );
}

Старый 10.08.2007, 10:16
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А импорт-то нужных классов прописан?

Старый 10.08.2007, 13:34
Stop Black PR! вне форума Посмотреть профиль Отправить личное сообщение для Stop Black PR! Посетить домашнюю страницу Stop Black PR! Найти все сообщения от Stop Black PR!
  № 3  
Ответить с цитированием
Stop Black PR!
 
Аватар для Stop Black PR!

Регистрация: Aug 2003
Адрес: Moscow
Сообщений: 113
Отправить сообщение для Stop Black PR! с помощью ICQ
Да, импорт прописан, я просто не стал весь код приводить.

Полный код работал в кадре, проблемы начались после переноса в класс.

Старый 10.08.2007, 13:37
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Хм, я ооочень давно работал с AMF, но проблем не возникло.
Вот декомпил (исходников с собой нет) одной из моих флешек:

Код:
 class ru.etcs.nokia.guestbook.Receiver
    {
        var addEventListener, service, pc, dispatchEvent;
        function Receiver (callback, message) {
            mx.events.EventDispatcher.initialize(this);
            addEventListener("onLoadSuccess", callback);
            addEventListener("onLoadFailed", callback);
            service = new mx.remoting.Service("/flashservice/gateway.php", null, "DataLoader", null, null);
            var _local2 = Function(service.loadMessage);
            pc = _local2.call(service, ((message != undefined) ? (message) : null));
            pc.__set__responder(new mx.rpc.RelayResponder(this, "onSuccess", "onFailure"));
        }
        function onSuccess(result_event) {
            var _local5 = result_event.__get__result();
            var _local3 = _local5.points;
            var _local2 = 0;
            while (_local2 < _local3.length) {
                var _local4 = _local3[_local2];
                _local3[_local2] = ru.etcs.nokia.core.Hex.binToArray(_local4, 3);
                _local2++;
            }
            dispatchEvent({type:"onLoadSuccess", result:_local5});
        }
        function onFailure(failure_event) {
            trace ("Fault");
            dispatchEvent({type:"onLoadFailed"});
        }
    }
onSuccess работает, onFailure нет, но это фигня

Старый 10.08.2007, 13:39
Stop Black PR! вне форума Посмотреть профиль Отправить личное сообщение для Stop Black PR! Посетить домашнюю страницу Stop Black PR! Найти все сообщения от Stop Black PR!
  № 5  
Ответить с цитированием
Stop Black PR!
 
Аватар для Stop Black PR!

Регистрация: Aug 2003
Адрес: Moscow
Сообщений: 113
Отправить сообщение для Stop Black PR! с помощью ICQ
вот на всякий случай:
Код:
import mx.remoting.Service;
import mx.services.Log;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
import mx.remoting.PendingCall;
может быть так, что для АС2 нужны другие класса?

ага, попробую

а onFailure в принципе не заработал? или он не нужен был?


Последний раз редактировалось etc; 10.08.2007 в 13:42.
Старый 10.08.2007, 13:43
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Я не знаю, либо это старая версия Remoting, либо AMFPHP. onFailure не работал изначально, решать проблему было лень, да и было это полтора года назад.

Старый 10.08.2007, 13:49
Stop Black PR! вне форума Посмотреть профиль Отправить личное сообщение для Stop Black PR! Посетить домашнюю страницу Stop Black PR! Найти все сообщения от Stop Black PR!
  № 7  
Ответить с цитированием
Stop Black PR!
 
Аватар для Stop Black PR!

Регистрация: Aug 2003
Адрес: Moscow
Сообщений: 113
Отправить сообщение для Stop Black PR! с помощью ICQ
понял, учту

этот исходник тоже древний изначально был, 2004 года, хотя очевидной разницы нет

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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