私のフレックス アプリケーションでは、サービスをよく使用します。アプリケーションでデータを更新するためにそれらが必要なので、かなり頻繁に呼び出します。現在、次の方法で実装しました。
1) サービスプロバイダ (AMFLoader クラス) がある 2) 応答ハンドラ (Responder クラス) がある
コードは次のようになります。
public function AMFLoader(url:String):void
{
gateway = new NetConnection();
gateway.connect(url);
}
public function callAMFLoader(serviceName:String, param:String, resultHandler:AMFResultHandler):void
{
gateway.addEventListener(IOErrorEvent.IO_ERROR, resultHandler.onIENetError);
gateway.addEventListener(NetStatusEvent.NET_STATUS, resultHandler.onNetStatus);
responder = new Responder(resultHandler.onSuccess, resultHandler.onFalse);
gateway.call(serviceName,responder, param);
}
および結果ハンドラ クラス:
public class AMFResultHandler
{
public function AMFResultHandler()
{
}
public function onSuccess(result:*):void
{
trace("Result from basic AMF Result handler on success: " + result);
}
サービスを呼び出すために、基本的な Result ハンドラ クラスを拡張し、カスタム関数を作成して結果を処理します。通常、最新の段階では、サービスから受け取ったデータをメイン アプリケーションで定義したグローバル変数にバインドし、それを他のクラスで使用します。
現在、これがグローバル変数を使用するのが非常に面倒なことであることに気付きました。それを行うのが良いプログラミング スタイルかどうかはわかりません。たとえば、コードをリファクタリングしようとしたときに、誰が、いつ (そして、なぜ) データを入力したのかを理解するのが難しい場合があることに気付きました。
サービス呼び出しからのデータを保存する方法を提案できるかもしれません。私が理解できていない主なことは、サービスの呼び出しとデータの保存は別のものであるため、getData などのメソッドを作成してアプリケーションのどこかで呼び出すことはできないということです (データはいくつかのイベントでのみ受信されるため)。 ....
前もって感謝します。