Flex Mobile アプリケーションはビュー ベースです。そして、私はAdobe Cirrusを使用しています(FMS netConnectionでも同じだと思います)フレックスモバイルアプリケーションのビュー間で永続的なnetConnectionを維持する方法を知っている人はいますか?
編集:私が必要なものをより明確に説明しようとする...
ここでは非常にシンプルで、巻雲に接続しています
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()
接続を閉じたい場合は、別のビューで実行できます。
私ができると思っていたアイデアのブレインストーミング:
メインの ViewNavigatorApplication mxml ファイルで接続をセットアップできるのではないかと考えていましたが、netConnection ステータス イベントに基づいて多くのことが行われ、トリガーされているため、それぞれの mxml ファイルからすべてを処理するのは非常に複雑なようです。ビュー。
ViewNavigatorApplication mxml ファイルで netCon vars を宣言し、各ビューのそれらの vars にイベント リスナーを追加するだけでよいでしょうか?
しかし、mainViewNavigatorApplication mxml ファイルに存在する変数へのアクセスに慣れていません。
接続を一度確立できるようにする必要があるだけで、その後は呼び出すまで持続します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;
私のホームビューでも同じです
しかし、電話しようとするとnullエラーが発生します
trace(netConnection.nearID)
profileView (homeView の後) の crationComplete 関数で、まだ同じ netConnection があり、同じ NearID を取得できるかどうかを確認します。