Flex Mobile приложения основаны на просмотре. И я использую Adobe Cirrus (я предполагаю, что он одинаков для любого сетевого соединения FMS) Кто-нибудь знает, как поддерживать постоянное сетевое соединение между представлениями в гибком мобильном приложении?
изменить: попытаться объяснить, что мне нужно, более четко ...
Так просто здесь я подключаюсь к Cirrus
netConnection = new NetConnection();
netConnection.addEventListener(NetStatusEvent.NET_STATUS, cirrusStatusHandler);
netConnection.connect(CirrusAddress + "/" + DeveloperKey);
Тогда у меня есть это для запуска определенных функций в зависимости от состояния соединения,
protected function cirrusStatusHandler(event:NetStatusEvent):void
switch (event.info.code)
{
case "NetConnection.Connect.Closed" :
trace(event.info.code);
break;
case "NetConnection.Connect.Rejected" :
trace(event.info.code);
break;
case "NetConnection.Connect.Failed" :
trace(event.info.code);
break;
case "NetConnection.Connect.Success" :
trace(event.info.code);
break;
case "NetGroup.Connect.Success" :
trace(event.info.code);
break;
case "NetGroup.Posting.Notify" :
trace(event.info.code);
break;
case "NetGroup.Neighbor.Connect" :
trace(event.info.code);
break;
case "NetGroup.Neighbor.Disconnect" :
trace(event.info.code);
break;
case "NetGroup.SendTo.Notify" :
trace(event.info.code);
break;
case "NetStream.Connect.Success" :
trace(event.info.code);
break;
case "NetStream.Publish.Start" :
trace(event.info.code);
break;
case "NetStream.Play.Start" :
trace(event.info.code);
break;
case "NetStream.Play.Failed" :
trace(event.info.code);
break;
case "NetStream.Play.Stop" :
trace(event.info.code);
break;
case "NetStream.Connect.Closed" :
trace(event.info.code);
break;
case "NetStream.Play.UnpublishNotify" :
trace(event.info.code);
break;
case "NetStream.Unpublish.Success" :
trace(event.info.code);
break;
}
}
Я хочу иметь возможность trace(netConnection.nearID)
в этом представлении, перейти в другое представление и trace(netConnection.nearID)
и получить тот же результат. и быть в состоянии иметь функцию cirrusStatusHandler()
, как у меня выше, для прослушивания перистых событий. Затем можно сделать netConnection.close()
в другом представлении, если я хочу иметь возможность закрыть соединение.
Идеи для мозгового штурма, что я думал, что мог сделать:
Я думал, что мог бы установить соединение в основном mxml-файле ViewNavigatorApplication, но у меня так много работы и запуска на основе событий состояния netConnection, что, кажется, может быть действительно сложно обработать все из этого mxml-файла каждый из просмотров.
Может быть, я мог бы объявить переменные netCon в mxml-файле ViewNavigatorApplication и просто добавить прослушиватели событий для этих переменных в каждом представлении?
Но я не знаком с доступом к переменным, которые существуют в файле mxml mainViewNavigatorApplication
Мне просто нужно иметь возможность установить соединение один раз, а затем оно остается постоянным, пока я не позвоню netConnection.close()
Есть идеи? Это возможно? Просто? Действительно сложно?
Полагаю, я мог бы использовать отдельные представления, где мне не нужен netConnection, и просто использовать это конкретное представление, используя «состояния» внутри представления, где netCon должен быть постоянным. Просто кажется глупым использовать состояния, так как это приложение на основе представления.
РЕДАКТИРОВАТЬ: @ Flextras Ответ:
Обновлен:
Вот то, что я получил для компиляции без каких-либо ошибок (пока я не отлаживаю, я получаю объяснение сбоя)
Вот основной файл приложения ViewNavigatorApplication MYAPP.mxml
Я положил это туда:
public static var netConnection:NetConnection;
public static var groupspec:GroupSpecifier;
public static var netGroup:NetGroup;
views.HomeView.netConnection = netConnection;
views.ProfileView.netConnection = netConnection;
views.HomeView.groupspec = groupspec;
views.ProfileView.groupspec = groupspec;
views.HomeView.netGroup = netGroup;
views.ProfileView.netGroup = netGroup;
тогда в моем пакете представлений ..
ProfileView.mxml:
public static var netConnection:NetConnection;
public static var groupspec:GroupSpecifier;
public static var netGroup:NetGroup;
и то же самое в моем домашнем представлении
но я получаю нулевую ошибку при попытке позвонить
trace(netConnection.nearID)
в функции crationComplete в profileView (который находится после homeView), чтобы увидеть, имеет ли он тот же netConnection и затем должен иметь возможность получить тот же nearID