Показать сообщение отдельно
Старый 20.09.2011, 20:02
THandle вне форума Посмотреть профиль Отправить личное сообщение для THandle Найти все сообщения от THandle
  № 5  
Ответить с цитированием
THandle

Регистрация: Sep 2011
Адрес: Russia, Ryazan
Сообщений: 8
Спасибо.

Пока сделал вот таким вот образом:

Есть класс№1, который собственно вызывает функцию GetState:

Код AS3:
public class class1
{
    ...
    private var FDevice: DeviceClass;
 
    ...
    public function DeviceState()
    {
	FDevice.GetState();
    }
}
В классе DeviceClass в методе GetState уходит запрос на сервер по сокету:

Код AS3:
                public function GetState()
		{
			var X: XML = 
			  <request> 
			     <device cmd="state"/> 
			  </request>;
			Send(X, 'Device GetState');
			this.addEventListener(StateEvent.CHANGE, onStateReceived);
		}
Диспетчеризируем событие мы когда приходят данные:

Код AS3:
		private function onSocketData(event: Event)
		{
		    ...
                    FState = eX.device[0].@state;
		    dispatchEvent(new Event(StateEvent.CHANGE));
		}
Соответственно обработчик вызывает некую функцию в Class1(экземпляр хранится в одном из полей класс DeviceClass):

Код AS3:
		private function onStateReceived(event: Event): void
		{
			FClass1.DeviceStateChanged();
			this.removeEventListener(StateEvent.CHANGE, onStateReceived);
		}
В этом вызываемом методе как отрабатываем то что состояние изменилось:

Код AS3:
	    public function DeviceStateChanged()
	    {
		  trace(FDevice.State);
	    }

В принципе такое поведение вроде как устраивает.
Вопрос в том, нельзя ли как то обойтись без функции DeviceStateChanged в Class1, чтобы State возвращалось
в метод Class1.DeviceState после вызова FDevice.GetState()?

Мне почему-то кажется что вряд ли такое возможно, но если бы такое поведение получилось создать было бы, наверное, не плохо

Спасибо.